Xref: utzoo comp.parallel:1883 comp.sys.transputer:2197 Path: utzoo!attcan!uunet!timbuk!cs.umn.edu!msi.umn.edu!src.honeywell.com!sol.ctr.columbia.edu!zaphod.mps.ohio-state.edu!usc!ucsd!ogicse!emory!hubcap!ralph From: ralph@cs.ubc.ca (Scott Ralph) Newsgroups: comp.parallel,comp.sys.transputer Subject: Help with nrecv() on Transputers Summary: nsend, transputers, trollius Keywords: transputer, trollius, nsend Message-ID: <11462@hubcap.clemson.edu> Date: 8 Nov 90 14:01:06 GMT Sender: fpst@hubcap.clemson.edu Organization: University of British Columbia, Vancouver, B.C., Canada Lines: 60 Approved: parallel@hubcap.clemson.edu I am having trouble using nrecv() when the data field becomes larger than 4096 bytes -- the maximum number of bytes for a single message. extern int errno; struct nmsg header; HostMessage host_message; typedef Message *MessagePtr; typedef struct hMsg { unsigned char sending_processor; unsigned char rows; unsigned char cols; unsigned char type; unsigned char generation; char data [NUMBER_PIXELS_IN_REGION]; } HostMessage; typedef HostMessage *HostMessagePtr; header.nh_event = 0; header.nh_type = 0; header.nh_length = sizeof (HostMessage); header.nh_flags = 0; header.nh_msg = (char *) &host_message; if ( nrecv (&header)) { printf("Death # 1 -- %d\n", errno); fflush(stdout); kexit (errno);* } The nrecv() returns with errno #4 -- EINTR This corresponds to an interrupted system call. NSEND(l) TROLLIUS NETWORK LIBRARY NSEND(l) The nh_length field holds the length (in bytes) of the mes- sage to be sent. If the sender and the receiver specify different lengths, the lesser amount will be transferred. The datalink functions called by nsend have a maximum mes- sage length of MAXNMSGLEN (defined in and currently set to 4096 bytes). Messages exceeding this length will be implicitly broken down into a series of smaller messages, which will be recombined at the receiving end. ------------- I am not sure if additional information must be specified (i.e. the nh_flags field?) or not. Any Suggestions? -- scott ralph