1607ca46eSDavid Howells /* Copyright (C) 2003 Krzysztof Benedyczak & Michal Wronski 2607ca46eSDavid Howells 3607ca46eSDavid Howells This program is free software; you can redistribute it and/or 4607ca46eSDavid Howells modify it under the terms of the GNU Lesser General Public 5607ca46eSDavid Howells License as published by the Free Software Foundation; either 6607ca46eSDavid Howells version 2.1 of the License, or (at your option) any later version. 7607ca46eSDavid Howells 8607ca46eSDavid Howells It is distributed in the hope that it will be useful, 9607ca46eSDavid Howells but WITHOUT ANY WARRANTY; without even the implied warranty of 10607ca46eSDavid Howells MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 11607ca46eSDavid Howells Lesser General Public License for more details. 12607ca46eSDavid Howells 13607ca46eSDavid Howells You should have received a copy of the GNU Lesser General Public 14607ca46eSDavid Howells License along with this software; if not, write to the Free 15607ca46eSDavid Howells Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 16607ca46eSDavid Howells 02111-1307 USA. */ 17607ca46eSDavid Howells 18607ca46eSDavid Howells #ifndef _LINUX_MQUEUE_H 19607ca46eSDavid Howells #define _LINUX_MQUEUE_H 20607ca46eSDavid Howells 21607ca46eSDavid Howells #define MQ_PRIO_MAX 32768 22607ca46eSDavid Howells /* per-uid limit of kernel memory used by mqueue, in bytes */ 23607ca46eSDavid Howells #define MQ_BYTES_MAX 819200 24607ca46eSDavid Howells 25607ca46eSDavid Howells struct mq_attr { 26607ca46eSDavid Howells long mq_flags; /* message queue flags */ 27607ca46eSDavid Howells long mq_maxmsg; /* maximum number of messages */ 28607ca46eSDavid Howells long mq_msgsize; /* maximum message size */ 29607ca46eSDavid Howells long mq_curmsgs; /* number of messages currently queued */ 30607ca46eSDavid Howells long __reserved[4]; /* ignored for input, zeroed for output */ 31607ca46eSDavid Howells }; 32607ca46eSDavid Howells 33607ca46eSDavid Howells /* 34607ca46eSDavid Howells * SIGEV_THREAD implementation: 35607ca46eSDavid Howells * SIGEV_THREAD must be implemented in user space. If SIGEV_THREAD is passed 36607ca46eSDavid Howells * to mq_notify, then 37607ca46eSDavid Howells * - sigev_signo must be the file descriptor of an AF_NETLINK socket. It's not 38607ca46eSDavid Howells * necessary that the socket is bound. 39607ca46eSDavid Howells * - sigev_value.sival_ptr must point to a cookie that is NOTIFY_COOKIE_LEN 40607ca46eSDavid Howells * bytes long. 41607ca46eSDavid Howells * If the notification is triggered, then the cookie is sent to the netlink 42607ca46eSDavid Howells * socket. The last byte of the cookie is replaced with the NOTIFY_?? codes: 43607ca46eSDavid Howells * NOTIFY_WOKENUP if the notification got triggered, NOTIFY_REMOVED if it was 44607ca46eSDavid Howells * removed, either due to a close() on the message queue fd or due to a 45607ca46eSDavid Howells * mq_notify() that removed the notification. 46607ca46eSDavid Howells */ 47607ca46eSDavid Howells #define NOTIFY_NONE 0 48607ca46eSDavid Howells #define NOTIFY_WOKENUP 1 49607ca46eSDavid Howells #define NOTIFY_REMOVED 2 50607ca46eSDavid Howells 51607ca46eSDavid Howells #define NOTIFY_COOKIE_LEN 32 52607ca46eSDavid Howells 53607ca46eSDavid Howells #endif 54