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