Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8)

Side by Side Diff: util/mac/service_management.h

Issue 467923003: Add ServiceManagement*() and their tests (Closed) Base URL: https://chromium.googlesource.com/crashpad/crashpad@process_util
Patch Set: Hey, where’d that line go? Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | util/mac/service_management.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2014 The Crashpad Authors. All rights reserved.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14
15 #ifndef CRASHPAD_UTIL_MAC_SERVICE_MANAGEMENT_H_
16 #define CRASHPAD_UTIL_MAC_SERVICE_MANAGEMENT_H_
17
18 #include <CoreFoundation/CoreFoundation.h>
19 #include <unistd.h>
20
21 #include <string>
22
23 namespace crashpad {
24
25 //! \brief Submits a job to the user launchd domain as in `SMJobSubmit()`.
26 //!
27 //! \param[in] job_cf A dictionary describing a job.
28 //!
29 //! \return `true` if the job was submitted successfully, otherwise `false`.
30 //!
31 //! \note This function is provided because `SMJobSubmit()` does not exist prior
32 //! to Mac OS X 10.6, and behaves flakily on Mac OS X 10.10 DP5 14A314h in
33 //! that it hangs 25% of the time (radar 17365104).
34 bool ServiceManagementSubmitJob(CFDictionaryRef job_cf);
35
36 //! \brief Removes a job from the user launchd domain as in `SMJobRemove()`.
37 //!
38 //! \param[in] label The label for the job to remove.
39 //! \param[in] wait `true` if this function should block, waiting for the job to
40 //! be removed. `false` if the job may be removed asynchronously.
41 //!
42 //! \return `true` if the job was removed successfully or if an asynchronous
43 //! attempt to remove the job was started successfully, otherwise `false`.
44 //!
45 //! \note This function is provided because `SMJobRemove()` does not exist prior
46 //! to Mac OS X 10.6, and when \a wait is true, blocks for far too long on
47 //! Mac OS X 10.10 DP5 14A314h (radar 17365104; `_block_until_job_exits()`
48 //! contains a one-second sleep() call).
49 bool ServiceManagementRemoveJob(const std::string& label, bool wait);
50
51 //! \brief Determines whether a specified job is loaded in the user launchd
52 //! domain.
53 //!
54 //! \param[in] label The label for the job to look up.
55 //!
56 //! \return `true` if the job is loaded, otherwise `false`.
57 //!
58 //! \note A loaded job is not necessarily presently running, nor has it
59 //! necessarily ever run in the past.
60 //! \note This function is provided because `SMJobCopyDictionary()` does not
61 //! exist prior to Mac OS X 10.6, and on Mac OS X 10.10 DP5 14A314h, it
62 //! fails to return a job dictionary immediately after a job is loaded
63 //! (radar 17365104).
64 bool ServiceManagementIsJobLoaded(const std::string& label);
65
66 //! \brief Determines whether a specified job is running in the user launchd
67 //! domain.
68 //!
69 //! \param[in] label The label for the job to look up.
70 //!
71 //! \return The job’s process ID if running, otherwise `0`.
72 //!
73 //! \note This function is provided because `SMJobCopyDictionary()` does not
74 //! exist prior to Mac OS X 10.6, and on Mac OS X 10.10 DP5 14A314h, it
75 //! fails to return a job dictionary immediately after a job is loaded
76 //! (radar 17365104).
77 pid_t ServiceManagementIsJobRunning(const std::string& label);
78
79 } // namespace crashpad
80
81 #endif // CRASHPAD_UTIL_MAC_SERVICE_MANAGEMENT
OLDNEW
« no previous file with comments | « no previous file | util/mac/service_management.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698