From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <15215407ef3dbfddfed3946505e2dc78@quintile.net> From: "Steve Simon" Date: Wed, 6 Dec 2006 16:14:14 +0000 To: 9fans@cse.psu.edu MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Subject: [9fans] OT: cannonical set of queue ops Topicbox-Message-UUID: eba8fec4-ead1-11e9-9d60-3106f5b1d025 Hi, Bit off topic In an embedded system, we are trying to wrap up the specifics of the RTOS we use and abstract it a little so we can switch OS later (to a cheaper one :-) We are therefore trying to come to a cannonical API, the only part of this we are having problems are interlocked queues. These are queues which the reader blocks if they are empty and the writer blocks if full. They have an option for a timeout which can be -1 to indicate forever or 0 for poll. We have found a need for a either IsQueueEmpty() or PeekQueueHead() entrypoint - a network driver is closing a connection a cleanup thread needs to poll the queue so it can deallocate it once all the remaining data has drained; we cannot just read the queue to see if its empty as this will remove the head entry if there is one. This is the one and only place we seem to need this so we are worried. Are we suffering from a lack of vision, or is some way of checking the number of items on a queue inevitable? -Steve