|
|
| version 1.4, 2004/02/25 17:38:51 | version 1.5, 2004/03/06 22:14:16 |
|---|---|
| Line 31 typedef struct caps_msgid { | Line 31 typedef struct caps_msgid { |
| } *caps_msgid_t; | } *caps_msgid_t; |
| typedef enum caps_type { | typedef enum caps_type { |
| CAPT_UNKNOWN, CAPT_CLIENT, CAPT_SERVICE, CAPT_REMOTE | CAPT_UNKNOWN, CAPT_CLIENT, CAPT_SERVICE, CAPT_REMOTE, CAPT_FORKED |
| } caps_type_t; | } caps_type_t; |
| typedef int64_t caps_gen_t; | |
| /* | /* |
| * Note: upper 16 bits reserved for kernel use | * Note: upper 16 bits reserved for kernel use |
| */ | */ |
| Line 44 typedef enum caps_type { | Line 46 typedef enum caps_type { |
| #define CAPF_EXCL 0x0008 | #define CAPF_EXCL 0x0008 |
| #define CAPF_ANYCLIENT (CAPF_USER|CAPF_GROUP|CAPF_WORLD) | #define CAPF_ANYCLIENT (CAPF_USER|CAPF_GROUP|CAPF_WORLD) |
| #define CAPF_WCRED 0x0010 /* waiting for cred */ | #define CAPF_WCRED 0x0010 /* waiting for cred */ |
| #define CAPF_NOFORK 0x0020 /* do not create a dummy entry on fork */ | |
| #define CAPF_WAITSVC 0x0040 /* block if service not available */ | |
| /* FUTURE: CAPF_ASYNC - support async services */ | /* FUTURE: CAPF_ASYNC - support async services */ |
| /* FUTURE: CAPF_NOGROUPS - don't bother filling in the groups[] array */ | /* FUTURE: CAPF_NOGROUPS - don't bother filling in the groups[] array */ |
| /* FUTURE: CAPF_TERM - send termination request to existing service */ | /* FUTURE: CAPF_TERM - send termination request to existing service */ |
| Line 110 typedef struct caps_kinfo { | Line 114 typedef struct caps_kinfo { |
| int ci_refs; | int ci_refs; |
| int ci_mrefs; /* message (vmspace) refs */ | int ci_mrefs; /* message (vmspace) refs */ |
| caps_type_t ci_type; | caps_type_t ci_type; |
| caps_gen_t ci_gen; | |
| uid_t ci_uid; | uid_t ci_uid; |
| gid_t ci_gid; | gid_t ci_gid; |
| int ci_namelen; | int ci_namelen; |
| Line 157 typedef struct caps_kmsg { | Line 162 typedef struct caps_kmsg { |
| * kernel support | * kernel support |
| */ | */ |
| void caps_exit(struct thread *td); | void caps_exit(struct thread *td); |
| void caps_fork(struct proc *p1, struct proc *p2); | void caps_fork(struct proc *p1, struct proc *p2, int flags); |
| #else | #else |
| Line 177 int caps_sys_reply(int, void *, int, off | Line 182 int caps_sys_reply(int, void *, int, off |
| int caps_sys_get(int, void *, int, caps_msgid_t, caps_cred_t); | int caps_sys_get(int, void *, int, caps_msgid_t, caps_cred_t); |
| int caps_sys_wait(int, void *, int, caps_msgid_t, caps_cred_t); | int caps_sys_wait(int, void *, int, caps_msgid_t, caps_cred_t); |
| int caps_sys_abort(int, off_t, int); | int caps_sys_abort(int, off_t, int); |
| int caps_sys_setgen(int, caps_gen_t); | |
| caps_gen_t caps_sys_getgen(int); | |
| #endif | #endif |