예제 #1
0
static void
cmterminate(void)
{
	int err;

	if ((err = unregister_strmod(modid, &ch_fmod)) < 0)
		strlog(modid, 0, 15, SL_ERROR | SL_NOPUTBUF, "unregister_strmod() failed %d", -err);
	return;
}
예제 #2
0
static __exit void
zapexit(void)
{
	int err;

	if ((err = unregister_strdev(&zap_cdev, major)) < 0)
		strlog(modid, 0, 0, SL_CONSOLE | SL_FATAL,
		       "could not unregsiter STREAMS device, err = %d", err);
	return;
}
예제 #3
0
static __init int
zapinit(void)
{
	int err;

	if ((err = register_strdev(&zap_cdev, major)) < 0) {
		strlog(modid, 0, 0, SL_CONSOLE | SL_FATAL,
		       "could not regsiter STREAMS device, err = %d", err);
		return (err);
	}
	if (major == 0)
		major = err;
	return (0);
}
예제 #4
0
파일: dlp.c 프로젝트: iHaD/openss7
int __init
dl_init(void)
{
	int err;

	cmn_err(CE_NOTE, DRV_BANNER);
	if ((err = dl_init_caches()))
		return (err);
	if ((err = register_strdev(&dl_cdev, major)) < 0) {
		strlog(DRV_ID, 0, LOG_WARNING, SL_WARN | SL_CONSOLE,
		       "could not register major %d", major);
		dl_term_caches();
		return (err);
	}
	if (err > 0)
		major = err;
	return (0);
}
예제 #5
0
static streamscall __unlikely int
ch_qopen(queue_t *q, dev_t *devp, int oflags, int sflag, cred_t *crp)
{
	struct ch *ch;
	int err;

	if (!SAMESTR(_WR(q))) {
		strlog(modid, 0, 15, SL_ERROR, "%s: can only push on pipe or fifo", MOD_NAME);
		return (ENXIO);	/* can only be pushed on pipe or fifo */
	}
	if ((err = mi_open_comm(&ch_head, sizeof(*ch), q, devp, oflags, sflag, crp)))
		return (err);
	ch = CH_PRIV(q);
	bzero(ch, sizeof(*ch));
	ch->sid = atomic_add_return(&ch_numb, 1);
	/* FIXME initialize structure */
	qprocson(q);
	return (0);
}
예제 #6
0
/**
 * ssys_free_priv - deallocate a private structure for the close routine
 * @q: read queue of closing Stream
 */
STATIC noinline void
ssys_free_priv(queue_t *q)
{
	struct ssys *s;

	ensure(q, return);
	s = SOCKSYS_PRIV(q);
	ensure(q, return);
#if 0
#if 0
	strlog(DRV_ID, s->dev.cminor, 0, SL_TRACE,
	       "unlinking private structure: reference count = %d", atomic_read(&s->refcnt));
#else
	printd(("%s: unlinking private structure, reference count = %d\n", DRV_NAME,
		atomic_read(&s->refcnt)));
#endif
#endif
	/* remove from master list */
	if ((*s->prev = s->next))
		s->next->prev = s->prev;
	s->next = NULL;

}
예제 #7
0
/**
 * zap_r_proto: - process M_(PC)PROTO message on lower read queue
 * @q: the lower read queue
 * @mp: the M_(PC)PROTO message to process
 */
static fastcall
zap_r_proto(queue_t *q, mblk_t *mp)
{
	struct mx *mx = MX_PRIV(q);

	switch (*(mx_ulong *) mp->b_rptr) {
	case MX_INFO_ACK:
		strlog(mx->modid, mx->sid, 0, SL_TRACE, "<- MX_INFO_ACK");
		rtn = mx_info_ack(mx, q, mp);
		break;
	case MX_OPTMGMT_ACK:
		strlog(mx->modid, mx->sid, 0, SL_TRACE, "<- MX_OPTMGMT_ACK");
		rtn = mx_optmgmt_ack(mx, q, mp);
		break;
	case MX_OK_ACK:
		strlog(mx->modid, mx->sid, 0, SL_TRACE, "<- MX_OK_ACK");
		rtn = mx_ok_ack(mx, q, mp);
		break;
	case MX_ERROR_ACK:
		strlog(mx->modid, mx->sid, 0, SL_TRACE, "<- MX_ERROR_ACK");
		rtn = mx_error_ack(mx, q, mp);
		break;
	case MX_ENABLE_CON:
		strlog(mx->modid, mx->sid, 0, SL_TRACE, "<- MX_ENABLE_CON");
		rtn = mx_enable_con(mx, q, mp);
		break;
	case MX_CONNECT_CON:
		strlog(mx->modid, mx->sid, 0, SL_TRACE, "<- MX_CONNECT_CON");
		rtn = mx_connect_con(mx, q, mp);
		break;
	case MX_DATA_IND:
		strlog(mx->modid, mx->sid, 0, SL_TRACE, "<- MX_DATA_IND");
		rtn = mx_data_ind(mx, q, mp);
		break;
	case MX_DISCONNECT_IND:
		strlog(mx->modid, mx->sid, 0, SL_TRACE, "<- MX_DISCONNECT_IND");
		rtn = mx_disconnect_ind(mx, q, mp);
		break;
	case MX_DISCONNECT_CON:
		strlog(mx->modid, mx->sid, 0, SL_TRACE, "<- MX_DISCONNECT_CON");
		rtn = mx_disconnect_con(mx, q, mp);
		break;
	case MX_DISABLE_IND:
		strlog(mx->modid, mx->sid, 0, SL_TRACE, "<- MX_DISABLE_IND");
		rtn = mx_disable_ind(mx, q, mp);
		break;
	case MX_DISABLE_CON:
		strlog(mx->modid, mx->sid, 0, SL_TRACE, "<- MX_DISABLE_CON");
		rtn = mx_disable_con(mx, q, mp);
		break;
	case MX_EVENT_IND:
		strlog(mx->modid, mx->sid, 0, SL_TRACE, "<- MX_EVENT_IND");
		rtn = mx_event_ind(mx, q, mp);
		break;
	}
}