File:  [MW Coherent from dump] / coherent / d / kernel / USRSRC / i8086 / drv / msgop.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Wed May 29 04:56:39 2019 UTC (7 years, 2 months ago) by root
Branches: MarkWilliams, MAIN
CVS tags: relic, HEAD
coherent

/*
 * User Message Functions.
 *
 *	Note: msgget() must be first function called.
 *
 *	91/02/07	Hal Snyder	mwchwc!/u/libc/sys/msgop.c
 *	msgget():  sizeof(key_t) is 4, not 2.
 */
#include <sys/msg.h>
#include <errno.h>

static int  msgfno   = -1;
static char msgdev[] = "/dev/msg";

/*
 * Message Control Operations.
 */

msgctl( msqid, cmd, buf )

int msqid;
int cmd;
struct msqid_ds * buf;

{
	int parm[4];

	if ( msgfno < 0 ) {
		errno = ENODEV;
		return -1;
	}

	parm[0] = -1;
	parm[1] = msqid;
	parm[2] = cmd;
	parm[3] = (int) buf;

	ioctl( msgfno, MSGCTL, parm );
	return parm[0];
}

/*
 * Get Message Queue.
 */

msgget( key, msgflg )

key_t key;
int msgflg;

{
	int parm[4];

	if ( msgfno < 0 ) {

		msgfno = open(msgdev, 0);

		if ( msgfno < 0 ) {
			perror(msgdev);
			errno = ENODEV;
			return -1;
		}
	}

	parm[0] = -1;
	parm[1] = key;
	parm[2] = key >> 16;
	parm[3] = msgflg;

	ioctl( msgfno, MSGGET, parm );
	return parm[0];
}

/*
 * Send Message.
 */
 
msgsnd( msqid, msgp, msgsz, msgflg )

int msqid;
struct msgbuf *msgp;
int msgsz;
int msgflg;

{
	int parm[5];

	if ( msgfno < 0 ) {
		errno = ENODEV;
		return -1;
	}

	parm[0] = -1;
	parm[1] = msqid;
	parm[2] = (int) msgp;
	parm[3] = msgsz;
	parm[4] = msgflg;

	ioctl( msgfno, MSGSND, parm );
	return parm[0];
}

/*
 * Receive Message.
 */
 
msgrcv( msqid, msgp, msgsz, msgtyp, msgflg )

int msqid;
struct msgbuf *msgp;
int msgsz;
long msgtyp;
int msgflg;

{
	int parm[7];

	if ( msgfno < 0 ) {
		errno = ENODEV;
		return -1;
	}

	parm[0] = -1;
	parm[1] = msqid;
	parm[2] = (int) msgp;
	parm[3] = msgsz;
	parm[4] = (int) msgtyp;
	parm[5] = (int) (msgtyp >> 16);
	parm[6] = msgflg;

	ioctl( msgfno, MSGRCV, parm );
	return parm[0];
}

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.