glibc (2.38)

(root)/
include/
sys/
msg.h
       1  /* Copyright (C) 1995-2023 Free Software Foundation, Inc.
       2     This file is part of the GNU C Library.
       3  
       4     The GNU C Library is free software; you can redistribute it and/or
       5     modify it under the terms of the GNU Lesser General Public
       6     License as published by the Free Software Foundation; either
       7     version 2.1 of the License, or (at your option) any later version.
       8  
       9     The GNU C Library is distributed in the hope that it will be useful,
      10     but WITHOUT ANY WARRANTY; without even the implied warranty of
      11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      12     Lesser General Public License for more details.
      13  
      14     You should have received a copy of the GNU Lesser General Public
      15     License along with the GNU C Library; if not, see
      16     <https://www.gnu.org/licenses/>.  */
      17  
      18  #ifndef _SYS_MSG_H
      19  #define _SYS_MSG_H
      20  
      21  #include <features.h>
      22  
      23  #define __need_size_t
      24  #include <stddef.h>
      25  
      26  /* Get common definition of System V style IPC.  */
      27  #include <sys/ipc.h>
      28  
      29  /* Get system dependent definition of `struct msqid_ds' and more.  */
      30  #include <bits/msq.h>
      31  
      32  /* Define types required by the standard.  */
      33  #include <bits/types/time_t.h>
      34  
      35  #ifndef __pid_t_defined
      36  typedef __pid_t pid_t;
      37  # define __pid_t_defined
      38  #endif
      39  
      40  #ifndef __ssize_t_defined
      41  typedef __ssize_t ssize_t;
      42  # define __ssize_t_defined
      43  #endif
      44  
      45  /* The following System V style IPC functions implement a message queue
      46     system.  The definition is found in XPG2.  */
      47  
      48  #ifdef __USE_GNU
      49  /* Template for struct to be used as argument for `msgsnd' and `msgrcv'.  */
      50  struct msgbuf
      51    {
      52      __syscall_slong_t mtype;	/* type of received/sent message */
      53      char mtext[1];		/* text of the message */
      54    };
      55  #endif
      56  
      57  
      58  __BEGIN_DECLS
      59  
      60  /* Message queue control operation.  */
      61  #ifndef __USE_TIME_BITS64
      62  extern int msgctl (int __msqid, int __cmd, struct msqid_ds *__buf) __THROW;
      63  #else
      64  # ifdef __REDIRECT_NTH
      65  extern int __REDIRECT_NTH (msgctl,
      66                             (int __msqid, int __cmd, struct msqid_ds *__buf),
      67                             __msgctl64);
      68  # else
      69  #  define msgctl __msgctl64
      70  # endif
      71  #endif
      72  
      73  /* Get messages queue.  */
      74  extern int msgget (key_t __key, int __msgflg) __THROW;
      75  
      76  /* Receive message from message queue.
      77  
      78     This function is a cancellation point and therefore not marked with
      79     __THROW.  */
      80  extern ssize_t msgrcv (int __msqid, void *__msgp, size_t __msgsz,
      81  		       long int __msgtyp, int __msgflg);
      82  
      83  /* Send message to message queue.
      84  
      85     This function is a cancellation point and therefore not marked with
      86     __THROW.  */
      87  extern int msgsnd (int __msqid, const void *__msgp, size_t __msgsz,
      88  		   int __msgflg);
      89  
      90  __END_DECLS
      91  
      92  #endif /* sys/msg.h */