patch-2.1.101 linux/drivers/acorn/scsi/msgqueue.c
Next file: linux/drivers/acorn/scsi/msgqueue.h
Previous file: linux/drivers/acorn/scsi/fas216.h
Back to the patch index
Back to the overall index
- Lines: 184
- Date:
Fri May 8 00:42:39 1998
- Orig file:
v2.1.100/linux/drivers/acorn/scsi/msgqueue.c
- Orig date:
Mon Feb 23 18:12:03 1998
diff -u --recursive --new-file v2.1.100/linux/drivers/acorn/scsi/msgqueue.c linux/drivers/acorn/scsi/msgqueue.c
@@ -11,12 +11,12 @@
#include "msgqueue.h"
/*
- * Function: struct msgqueue_entry *mqe_alloc (MsgQueue_t *msgq)
+ * Function: struct msgqueue_entry *mqe_alloc(MsgQueue_t *msgq)
* Purpose : Allocate a message queue entry
* Params : msgq - message queue to claim entry for
* Returns : message queue entry or NULL.
*/
-static struct msgqueue_entry *mqe_alloc (MsgQueue_t *msgq)
+static struct msgqueue_entry *mqe_alloc(MsgQueue_t *msgq)
{
struct msgqueue_entry *mq;
@@ -27,12 +27,12 @@
}
/*
- * Function: void mqe_free (MsgQueue_t *msgq, struct msgqueue_entry *mq)
+ * Function: void mqe_free(MsgQueue_t *msgq, struct msgqueue_entry *mq)
* Purpose : free a message queue entry
* Params : msgq - message queue to free entry from
* mq - message queue entry to free
*/
-static void mqe_free (MsgQueue_t *msgq, struct msgqueue_entry *mq)
+static void mqe_free(MsgQueue_t *msgq, struct msgqueue_entry *mq)
{
if (mq) {
mq->next = msgq->free;
@@ -41,11 +41,11 @@
}
/*
- * Function: void msgqueue_initialise (MsgQueue_t *msgq)
+ * Function: void msgqueue_initialise(MsgQueue_t *msgq)
* Purpose : initialise a message queue
* Params : msgq - queue to initialise
*/
-void msgqueue_initialise (MsgQueue_t *msgq)
+void msgqueue_initialise(MsgQueue_t *msgq)
{
int i;
@@ -60,21 +60,21 @@
/*
- * Function: void msgqueue_free (MsgQueue_t *msgq)
+ * Function: void msgqueue_free(MsgQueue_t *msgq)
* Purpose : free a queue
* Params : msgq - queue to free
*/
-void msgqueue_free (MsgQueue_t *msgq)
+void msgqueue_free(MsgQueue_t *msgq)
{
}
/*
- * Function: int msgqueue_msglength (MsgQueue_t *msgq)
+ * Function: int msgqueue_msglength(MsgQueue_t *msgq)
* Purpose : calculate the total length of all messages on the message queue
* Params : msgq - queue to examine
* Returns : number of bytes of messages in queue
*/
-int msgqueue_msglength (MsgQueue_t *msgq)
+int msgqueue_msglength(MsgQueue_t *msgq)
{
struct msgqueue_entry *mq = msgq->qe;
int length = 0;
@@ -86,19 +86,19 @@
}
/*
- * Function: char *msgqueue_getnextmsg (MsgQueue_t *msgq, int *length)
+ * Function: char *msgqueue_getnextmsg(MsgQueue_t *msgq, int *length)
* Purpose : return a message & its length
* Params : msgq - queue to obtain message from
* length - pointer to int for message length
- * Returns : pointer to message string
+ * Returns : pointer to message string, or NULL
*/
-char *msgqueue_getnextmsg (MsgQueue_t *msgq, int *length)
+char *msgqueue_getnextmsg(MsgQueue_t *msgq, int *length)
{
struct msgqueue_entry *mq;
if ((mq = msgq->qe) != NULL) {
msgq->qe = mq->next;
- mqe_free (msgq, mq);
+ mqe_free(msgq, mq);
*length = mq->length;
}
@@ -106,26 +106,42 @@
}
/*
- * Function: int msgqueue_addmsg (MsgQueue_t *msgq, int length, ...)
+ * Function: char *msgqueue_peeknextmsg(MsgQueue_t *msgq, int *length)
+ * Purpose : return next message & length without removing it from the list
+ * Params : msgq - queue to obtain message from
+ * : length - pointer to int for message length
+ * Returns : pointer to message string, or NULL
+ */
+char *msgqueue_peeknextmsg(MsgQueue_t *msgq, int *length)
+{
+ struct msgqueue_entry *mq = msgq->qe;
+
+ *length = mq ? mq->length : 0;
+
+ return mq ? mq->msg : NULL;
+}
+
+/*
+ * Function: int msgqueue_addmsg(MsgQueue_t *msgq, int length, ...)
* Purpose : add a message onto a message queue
* Params : msgq - queue to add message on
* length - length of message
* ... - message bytes
* Returns : != 0 if successful
*/
-int msgqueue_addmsg (MsgQueue_t *msgq, int length, ...)
+int msgqueue_addmsg(MsgQueue_t *msgq, int length, ...)
{
- struct msgqueue_entry *mq = mqe_alloc (msgq);
+ struct msgqueue_entry *mq = mqe_alloc(msgq);
va_list ap;
if (mq) {
struct msgqueue_entry **mqp;
int i;
- va_start (ap, length);
+ va_start(ap, length);
for (i = 0; i < length; i++)
- mq->msg[i] = va_arg (ap, unsigned char);
- va_end (ap);
+ mq->msg[i] = va_arg(ap, unsigned char);
+ va_end(ap);
mq->length = length;
mq->next = NULL;
@@ -141,17 +157,17 @@
}
/*
- * Function: void msgqueue_flush (MsgQueue_t *msgq)
+ * Function: void msgqueue_flush(MsgQueue_t *msgq)
* Purpose : flush all messages from message queue
* Params : msgq - queue to flush
*/
-void msgqueue_flush (MsgQueue_t *msgq)
+void msgqueue_flush(MsgQueue_t *msgq)
{
struct msgqueue_entry *mq, *mqnext;
for (mq = msgq->qe; mq; mq = mqnext) {
mqnext = mq->next;
- mqe_free (msgq, mq);
+ mqe_free(msgq, mq);
}
msgq->qe = NULL;
}
@@ -160,16 +176,17 @@
EXPORT_SYMBOL(msgqueue_free);
EXPORT_SYMBOL(msgqueue_msglength);
EXPORT_SYMBOL(msgqueue_getnextmsg);
+EXPORT_SYMBOL(msgqueue_peeknextmsg);
EXPORT_SYMBOL(msgqueue_addmsg);
EXPORT_SYMBOL(msgqueue_flush);
#ifdef MODULE
-int init_module (void)
+int init_module(void)
{
return 0;
}
-void cleanup_module (void)
+void cleanup_module(void)
{
}
#endif
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov