root/drivers/scsi/arm/msgqueue.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0-only */
   2 /*
   3  *  linux/drivers/acorn/scsi/msgqueue.h
   4  *
   5  *  Copyright (C) 1997 Russell King
   6  *
   7  *  message queue handling
   8  */
   9 #ifndef MSGQUEUE_H
  10 #define MSGQUEUE_H
  11 
  12 struct message {
  13     char msg[8];
  14     int length;
  15     int fifo;
  16 };
  17 
  18 struct msgqueue_entry {
  19     struct message msg;
  20     struct msgqueue_entry *next;
  21 };
  22 
  23 #define NR_MESSAGES 4
  24 
  25 typedef struct {
  26     struct msgqueue_entry *qe;
  27     struct msgqueue_entry *free;
  28     struct msgqueue_entry entries[NR_MESSAGES];
  29 } MsgQueue_t;
  30 
  31 /*
  32  * Function: void msgqueue_initialise(MsgQueue_t *msgq)
  33  * Purpose : initialise a message queue
  34  * Params  : msgq - queue to initialise
  35  */
  36 extern void msgqueue_initialise(MsgQueue_t *msgq);
  37 
  38 /*
  39  * Function: void msgqueue_free(MsgQueue_t *msgq)
  40  * Purpose : free a queue
  41  * Params  : msgq - queue to free
  42  */
  43 extern void msgqueue_free(MsgQueue_t *msgq);
  44 
  45 /*
  46  * Function: int msgqueue_msglength(MsgQueue_t *msgq)
  47  * Purpose : calculate the total length of all messages on the message queue
  48  * Params  : msgq - queue to examine
  49  * Returns : number of bytes of messages in queue
  50  */
  51 extern int msgqueue_msglength(MsgQueue_t *msgq);
  52 
  53 /*
  54  * Function: struct message *msgqueue_getmsg(MsgQueue_t *msgq, int msgno)
  55  * Purpose : return a message & its length
  56  * Params  : msgq   - queue to obtain message from
  57  *         : msgno  - message number
  58  * Returns : pointer to message string, or NULL
  59  */
  60 extern struct message *msgqueue_getmsg(MsgQueue_t *msgq, int msgno);
  61 
  62 /*
  63  * Function: int msgqueue_addmsg(MsgQueue_t *msgq, int length, ...)
  64  * Purpose : add a message onto a message queue
  65  * Params  : msgq   - queue to add message on
  66  *           length - length of message
  67  *           ...    - message bytes
  68  * Returns : != 0 if successful
  69  */
  70 extern int msgqueue_addmsg(MsgQueue_t *msgq, int length, ...);
  71 
  72 /*
  73  * Function: void msgqueue_flush(MsgQueue_t *msgq)
  74  * Purpose : flush all messages from message queue
  75  * Params  : msgq - queue to flush
  76  */
  77 extern void msgqueue_flush(MsgQueue_t *msgq);
  78 
  79 #endif

/* [<][>][^][v][top][bottom][index][help] */