]> git.saurik.com Git - apple/launchd.git/blob - launchd/src/launch_internal.h
46c1725e63d4450d140693a2e65246ae5cdcefb1
[apple/launchd.git] / launchd / src / launch_internal.h
1 #ifndef _LAUNCH_INTERNAL_H_
2 #define _LAUNCH_INTERNAL_H_
3 /*
4 * Copyright (c) 2007 Apple Computer, Inc. All rights reserved.
5 *
6 * @APPLE_APACHE_LICENSE_HEADER_START@
7 *
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
11 *
12 * http://www.apache.org/licenses/LICENSE-2.0
13 *
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 *
20 * @APPLE_APACHE_LICENSE_HEADER_END@
21 */
22
23 #pragma GCC visibility push(default)
24
25 #define LAUNCHD_DB_PREFIX "/var/db/launchd.db"
26
27 struct _launch_data {
28 uint64_t type;
29 union {
30 struct {
31 union {
32 launch_data_t *_array;
33 char *string;
34 void *opaque;
35 int64_t __junk;
36 };
37 union {
38 uint64_t _array_cnt;
39 uint64_t string_len;
40 uint64_t opaque_size;
41 };
42 };
43 int64_t fd;
44 uint64_t mp;
45 uint64_t err;
46 int64_t number;
47 uint64_t boolean; /* We'd use 'bool' but this struct needs to be used under Rosetta, and sizeof(bool) is different between PowerPC and Intel */
48 double float_num;
49 };
50 };
51
52 typedef struct _launch *launch_t;
53
54 launch_t launchd_fdopen(int, int);
55 int launchd_getfd(launch_t);
56 void launchd_close(launch_t, __typeof__(close) closefunc);
57
58 launch_data_t launch_data_new_errno(int);
59 bool launch_data_set_errno(launch_data_t, int);
60
61 int launchd_msg_send(launch_t, launch_data_t);
62 int launchd_msg_recv(launch_t, void (*)(launch_data_t, void *), void *);
63
64 size_t launch_data_pack(launch_data_t d, void *where, size_t len, int *fd_where, size_t *fdslotsleft);
65 launch_data_t launch_data_unpack(void *data, size_t data_size, int *fds, size_t fd_cnt, size_t *data_offset, size_t *fdoffset);
66
67 #pragma GCC visibility pop
68
69 #endif