void
shmwsrv(q)
queue_t	*q;						// pointer queue
{
	register shmq_t		 *sm;		// shared message queue pointer
	register shsrc_t	 *ss;		// comm area pointer
	register shmq_t		 *os;		// other side's shmq pointer
	register ulong	 mblkadj;		// mblk adjustment

	sm = (shmq_t *)q->q_ptr;
	ss = sm->sm_scla;					// on board communication area
	os = (shmq_t *)((char *)ss->ss_dbcb + (char *)sm - (char *)ss);
	if (((long)os->sm_pqla & 1) == 0) {	// if not already processing

		M_ADJDEST(ss,mblkadj);
		if (prosmq(sm,ss->ss_dbcb,os,mblkadj))
			sm->SM_DFLG = 1;			// put in delay queue
	}
}
