80 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/*3 * linux/drivers/acorn/scsi/msgqueue.h4 *5 * Copyright (C) 1997 Russell King6 *7 * message queue handling8 */9#ifndef MSGQUEUE_H10#define MSGQUEUE_H11 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 424 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 queue34 * Params : msgq - queue to initialise35 */36extern void msgqueue_initialise(MsgQueue_t *msgq);37 38/*39 * Function: void msgqueue_free(MsgQueue_t *msgq)40 * Purpose : free a queue41 * Params : msgq - queue to free42 */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 queue48 * Params : msgq - queue to examine49 * Returns : number of bytes of messages in queue50 */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 length56 * Params : msgq - queue to obtain message from57 * : msgno - message number58 * Returns : pointer to message string, or NULL59 */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 queue65 * Params : msgq - queue to add message on66 * length - length of message67 * ... - message bytes68 * Returns : != 0 if successful69 */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 queue75 * Params : msgq - queue to flush76 */77extern void msgqueue_flush(MsgQueue_t *msgq);78 79#endif80