File:  [XINU] / xinu / sys / TEST / test.c.mes1
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 17:39:04 2018 UTC (8 years, 2 months ago) by root
Branches: xinu, MAIN
CVS tags: xinu-19870308, HEAD
Xinu for VAX

/* test.c - main */

#include <conf.h>
#include <kernel.h>

/*------------------------------------------------------------------------
 *  main  --  current test routines
 *------------------------------------------------------------------------
 */
main()
{
	int prhello(), sender(), receiver();
	int i, isend, irecv;

	prhello();
	for (i=0; i<(NPROC-2)/2; i++) {
		isend = create (sender, 12000, 19, "sender", 1, i);
		if (isend != SYSERR)
			resume (isend);
		else {
			kprintf ("main: create failed\n");
			break;
			}
		resume (
	    	create (receiver,12000, 19, "receiv", 2, isend, i)
				);
		}
}

prhello()
{
	kprintf("hello world\n");
}

sender(ikey)
int ikey;
{
	int	irecvpid;

	irecvpid = receive();
	kprintf ("sender #%d: about to send message to %d\n", ikey, irecvpid);
	send (irecvpid, ikey);
	while (1)
		; /* hog cpu time */
}

receiver(isender, ikey)
int isender, ikey;
{
	int	mes = recvclr();

	if (send (isender, getpid()) == SYSERR)
		kprintf ("receiver: can't send\n");
	kprintf ("receiver #%d: waiting for my message, using recvtim\n", ikey);
	while (mes != ikey)  /* wait until my sender sends me the key */
		mes = recvtim(20); /* wait at most 2 seconds */
	kprintf ("receiver #%d: got my message, killing sender and dying\n",
		 ikey);
	kill (isender);	/* kill off my sender */
}

unix.superglobalmegacorp.com

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