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