msgqueue.h (2011B)
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 12struct message { 13 char msg[8]; 14 int length; 15 int fifo; 16}; 17 18struct msgqueue_entry { 19 struct message msg; 20 struct msgqueue_entry *next; 21}; 22 23#define NR_MESSAGES 4 24 25typedef 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 */ 36extern 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 */ 43extern 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 */ 51extern 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 */ 60extern 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 */ 70extern 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 */ 77extern void msgqueue_flush(MsgQueue_t *msgq); 78 79#endif