Date: Thu, 29 Jan 2009 23:35:08 GMT From: Robert Watson <rwatson@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 156895 for review Message-ID: <200901292335.n0TNZ8t4061778@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=156895 Change 156895 by rwatson@rwatson_freebsd_capabilities on 2009/01/29 23:34:38 Checkpoint chicken scratchings. Affected files ... .. //depot/projects/trustedbsd/capabilities/src/lib/libcapability/libcap_consumer.c#1 add .. //depot/projects/trustedbsd/capabilities/src/lib/libcapability/libcapability.h#3 edit Differences ... ==== //depot/projects/trustedbsd/capabilities/src/lib/libcapability/libcapability.h#3 (text+ko) ==== @@ -30,10 +30,71 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapability/libcapability.h#2 $ + * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapability/libcapability.h#3 $ */ #ifndef _LIBCAPABILITY_H_ #define _LIBCAPABILITY_H_ +/* + * libcapability operation types are negative; positive request types are + * reserved for application use. + */ +#define LIBCAP_REQ_SHUTDOWN -1 + +struct lc_consumer { + void *lc_private; /* Private data. */ +}; + +struct lc_producer { + void *lp_private; /* Private data. */ +}; + +/* + * Version of the header seen on the wire. + */ +struct lc_wire_message { + uint32_t lwm_magic; /* Magic number. */ + uint32_t lwm_hdrlen; /* Length of this header. */ + uint64_t lwm_opseqnum; /* Unique ID of request. */ + int64_t lwm_optype; /* Operation type to perform. */ + uint64_t lwm_flags; /* Flags. */ + uint64_t lwm_immlen; /* Immediates length. */ + uint64_t lwm_datalen; /* Data length. */ +}; + +/* + * Version of the header exposed to applications. + */ +struct lc_message { + uint64_t lm_opseqnum; /* Unique ID of request. */ + int64_t lm_optype; /* Operation type to perform. */ + uint64_t lm_flags; /* Flags. */ + uint64_t lm_immlen; /* Immediates length. */ + uint64_t lm_datalen; /* Data length. */ + u_char *lm_immp; /* Immediates pointer. */ + u_char *l_datap; /* Data pointer. */ +}; + +/* + * Allow a libcapability "consumer" to initialize its consumer state. + */ +void lc_consumer_destroy(struct lc_consumer *lccp); +struct lc_consumer *lc_consumer_new(const char *service_name, + const char *library_name); +int lc_consumer_start(struct lc_consumer *lccp); + +/* + * Allow a libcapability "producer" to initialize its producer state. A + * service name is passed, and will be validated. + */ +struct lc_producer *lc_producer_register(const char *service_name); +void lc_producer_destroy(struct lc_producer *lcpp); + +struct lc_message *lc_producer_recvmessage(struct lc_producer *lcpp); +struct lc_message *lc_producer_allocmessage(struct lc_producer *lcpp); +void lc_producer_freemessage(struct lc_producer *lcpp, + struct lc_message *lmp); +int lc_producer_sendmessage(struct lc_producer *lcpp); + #endif /* !_LIBCAPABILITY_H_ */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200901292335.n0TNZ8t4061778>
