1*0Sstevel@tonic-gate /* 2*0Sstevel@tonic-gate * CDDL HEADER START 3*0Sstevel@tonic-gate * 4*0Sstevel@tonic-gate * The contents of this file are subject to the terms of the 5*0Sstevel@tonic-gate * Common Development and Distribution License, Version 1.0 only 6*0Sstevel@tonic-gate * (the "License"). You may not use this file except in compliance 7*0Sstevel@tonic-gate * with the License. 8*0Sstevel@tonic-gate * 9*0Sstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10*0Sstevel@tonic-gate * or http://www.opensolaris.org/os/licensing. 11*0Sstevel@tonic-gate * See the License for the specific language governing permissions 12*0Sstevel@tonic-gate * and limitations under the License. 13*0Sstevel@tonic-gate * 14*0Sstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each 15*0Sstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16*0Sstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the 17*0Sstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying 18*0Sstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner] 19*0Sstevel@tonic-gate * 20*0Sstevel@tonic-gate * CDDL HEADER END 21*0Sstevel@tonic-gate */ 22*0Sstevel@tonic-gate /* 23*0Sstevel@tonic-gate * Copyright 1993 Sun Microsystems, Inc. All rights reserved. 24*0Sstevel@tonic-gate * Use is subject to license terms. 25*0Sstevel@tonic-gate */ 26*0Sstevel@tonic-gate 27*0Sstevel@tonic-gate /* Copyright (c) 1984 AT&T */ 28*0Sstevel@tonic-gate /* All Rights Reserved */ 29*0Sstevel@tonic-gate 30*0Sstevel@tonic-gate #pragma ident "%Z%%M% %I% %E% SMI" 31*0Sstevel@tonic-gate 32*0Sstevel@tonic-gate #include <syscall.h> 33*0Sstevel@tonic-gate #include <varargs.h> 34*0Sstevel@tonic-gate #include <sys/types.h> 35*0Sstevel@tonic-gate #include <sys/ipc.h> 36*0Sstevel@tonic-gate #include <sys/msg.h> 37*0Sstevel@tonic-gate 38*0Sstevel@tonic-gate 39*0Sstevel@tonic-gate /* msgsys dispatch argument */ 40*0Sstevel@tonic-gate #define MSGGET 0 41*0Sstevel@tonic-gate #define MSGCTL 1 42*0Sstevel@tonic-gate #define MSGRCV 2 43*0Sstevel@tonic-gate #define MSGSND 3 44*0Sstevel@tonic-gate 45*0Sstevel@tonic-gate 46*0Sstevel@tonic-gate msgget(key, msgflg) 47*0Sstevel@tonic-gate key_t key; 48*0Sstevel@tonic-gate int msgflg; 49*0Sstevel@tonic-gate { 50*0Sstevel@tonic-gate return(_syscall(SYS_msgsys, MSGGET, key, msgflg)); 51*0Sstevel@tonic-gate } 52*0Sstevel@tonic-gate 53*0Sstevel@tonic-gate msgctl(msqid, cmd, buf) 54*0Sstevel@tonic-gate int msqid, cmd; 55*0Sstevel@tonic-gate struct msqid_ds *buf; 56*0Sstevel@tonic-gate { 57*0Sstevel@tonic-gate return(_syscall(SYS_msgsys, MSGCTL, msqid, cmd, buf)); 58*0Sstevel@tonic-gate } 59*0Sstevel@tonic-gate 60*0Sstevel@tonic-gate msgrcv(msqid, msgp, msgsz, msgtyp, msgflg) 61*0Sstevel@tonic-gate int msqid; 62*0Sstevel@tonic-gate struct msgbuf *msgp; 63*0Sstevel@tonic-gate int msgsz; 64*0Sstevel@tonic-gate long msgtyp; 65*0Sstevel@tonic-gate int msgflg; 66*0Sstevel@tonic-gate { 67*0Sstevel@tonic-gate return(_syscall(SYS_msgsys, MSGRCV, msqid, msgp, msgsz, msgtyp, msgflg)); 68*0Sstevel@tonic-gate } 69*0Sstevel@tonic-gate 70*0Sstevel@tonic-gate msgsnd(msqid, msgp, msgsz, msgflg) 71*0Sstevel@tonic-gate int msqid; 72*0Sstevel@tonic-gate struct msgbuf *msgp; 73*0Sstevel@tonic-gate int msgsz, msgflg; 74*0Sstevel@tonic-gate { 75*0Sstevel@tonic-gate return(_syscall(SYS_msgsys, MSGSND, msqid, msgp, msgsz, msgflg)); 76*0Sstevel@tonic-gate } 77*0Sstevel@tonic-gate 78*0Sstevel@tonic-gate 79*0Sstevel@tonic-gate msgsys(sysnum, va_alist) 80*0Sstevel@tonic-gate int sysnum; 81*0Sstevel@tonic-gate va_dcl 82*0Sstevel@tonic-gate { 83*0Sstevel@tonic-gate va_list ap; 84*0Sstevel@tonic-gate key_t key; 85*0Sstevel@tonic-gate int msgflg; 86*0Sstevel@tonic-gate int msgflag; 87*0Sstevel@tonic-gate int msqid, cmd; 88*0Sstevel@tonic-gate struct msqid_ds *buf; 89*0Sstevel@tonic-gate struct msgbuf *msgp; 90*0Sstevel@tonic-gate int msgsz; 91*0Sstevel@tonic-gate long msgtyp; 92*0Sstevel@tonic-gate 93*0Sstevel@tonic-gate 94*0Sstevel@tonic-gate va_start(ap); 95*0Sstevel@tonic-gate switch (sysnum) { 96*0Sstevel@tonic-gate case MSGGET: 97*0Sstevel@tonic-gate key=va_arg(ap, key_t); 98*0Sstevel@tonic-gate msgflag=va_arg(ap, int); 99*0Sstevel@tonic-gate return(msgget(key, msgflag)); 100*0Sstevel@tonic-gate case MSGCTL: 101*0Sstevel@tonic-gate msqid=va_arg(ap, int); 102*0Sstevel@tonic-gate cmd=va_arg(ap, int); 103*0Sstevel@tonic-gate buf=va_arg(ap, struct msqid_ds *); 104*0Sstevel@tonic-gate return(msgctl(msqid, cmd, buf)); 105*0Sstevel@tonic-gate case MSGRCV: 106*0Sstevel@tonic-gate msqid=va_arg(ap, int); 107*0Sstevel@tonic-gate msgp=va_arg(ap, struct msgbuf *); 108*0Sstevel@tonic-gate msgsz=va_arg(ap, int); 109*0Sstevel@tonic-gate msgtyp=va_arg(ap, long); 110*0Sstevel@tonic-gate msgflg=va_arg(ap, int); 111*0Sstevel@tonic-gate return(msgrcv(msqid, msgp, msgsz, msgtyp, msgflg)); 112*0Sstevel@tonic-gate case MSGSND: 113*0Sstevel@tonic-gate msqid=va_arg(ap, int); 114*0Sstevel@tonic-gate msgp=va_arg(ap, struct msgbuf *); 115*0Sstevel@tonic-gate msgsz=va_arg(ap, int); 116*0Sstevel@tonic-gate msgflg=va_arg(ap, int); 117*0Sstevel@tonic-gate return(msgsnd(msqid, msgp, msgsz, msgflg)); 118*0Sstevel@tonic-gate } 119*0Sstevel@tonic-gate } 120