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