[PATCH] fix semaphore handling in __unregister_chrdev_region
[linux/fpc-iii.git] / drivers / scsi / arm / msgqueue.h
blob41c7333df3e3ea33384f3303a90fd09ba8053373
1 /*
2 * linux/drivers/acorn/scsi/msgqueue.h
4 * Copyright (C) 1997 Russell King
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.
10 * message queue handling
12 #ifndef MSGQUEUE_H
13 #define MSGQUEUE_H
15 struct message {
16 char msg[8];
17 int length;
18 int fifo;
21 struct msgqueue_entry {
22 struct message msg;
23 struct msgqueue_entry *next;
26 #define NR_MESSAGES 4
28 typedef struct {
29 struct msgqueue_entry *qe;
30 struct msgqueue_entry *free;
31 struct msgqueue_entry entries[NR_MESSAGES];
32 } MsgQueue_t;
35 * Function: void msgqueue_initialise(MsgQueue_t *msgq)
36 * Purpose : initialise a message queue
37 * Params : msgq - queue to initialise
39 extern void msgqueue_initialise(MsgQueue_t *msgq);
42 * Function: void msgqueue_free(MsgQueue_t *msgq)
43 * Purpose : free a queue
44 * Params : msgq - queue to free
46 extern void msgqueue_free(MsgQueue_t *msgq);
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
54 extern int msgqueue_msglength(MsgQueue_t *msgq);
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
63 extern struct message *msgqueue_getmsg(MsgQueue_t *msgq, int msgno);
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
73 extern int msgqueue_addmsg(MsgQueue_t *msgq, int length, ...);
76 * Function: void msgqueue_flush(MsgQueue_t *msgq)
77 * Purpose : flush all messages from message queue
78 * Params : msgq - queue to flush
80 extern void msgqueue_flush(MsgQueue_t *msgq);
82 #endif