PERFORCE change 156895 for review
Robert Watson
rwatson at FreeBSD.org
Thu Jan 29 15:35:10 PST 2009
http://perforce.freebsd.org/chv.cgi?CH=156895
Change 156895 by rwatson at 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_ */
More information about the p4-projects
mailing list