From owner-p4-projects@FreeBSD.ORG Thu Jan 29 23:35:09 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 26CDB1065673; Thu, 29 Jan 2009 23:35:09 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DA8BF106564A for ; Thu, 29 Jan 2009 23:35:08 +0000 (UTC) (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id AC7C28FC08 for ; Thu, 29 Jan 2009 23:35:08 +0000 (UTC) (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n0TNZ8tX061780 for ; Thu, 29 Jan 2009 23:35:08 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n0TNZ8t4061778 for perforce@freebsd.org; Thu, 29 Jan 2009 23:35:08 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Date: Thu, 29 Jan 2009 23:35:08 GMT Message-Id: <200901292335.n0TNZ8t4061778@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bb+lists.freebsd.perforce@cyrus.watson.org using -f From: Robert Watson To: Perforce Change Reviews Cc: Subject: PERFORCE change 156895 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 29 Jan 2009 23:35:10 -0000 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_ */