⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 schedule.c

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻 C
字号:
#ifndef lintstatic char sccsid[] = "@(#)schedule.c	4.2	(Berkeley)	5/27/83";#endif not lint# include	"trek.h"/***  SCHEDULE AN EVENT****	An event of type 'type' is scheduled for time NOW + 'offset'**	into the first available slot.  'x', 'y', and 'z' are**	considered the attributes for this event.****	The address of the slot is returned.*/struct event *schedule(type, offset, x, y, z)int	type;double	offset;char	x, y;char	z;{	register struct event	*e;	register int		i;	double			date;	date = Now.date + offset;	for (i = 0; i < MAXEVENTS; i++)	{		e = &Event[i];		if (e->evcode)			continue;		/* got a slot */#		ifdef xTRACE		if (Trace)			printf("schedule: type %d @ %.2f slot %d parm %d %d %d\n",				type, date, i, x, y, z);#		endif		e->evcode = type;		e->date = date;		e->x = x;		e->y = y;		e->systemname = z;		Now.eventptr[type] = e;		return (e);	}	syserr("Cannot schedule event %d parm %d %d %d", type, x, y, z);}/***  RESCHEDULE AN EVENT****	The event pointed to by 'e' is rescheduled to the current**	time plus 'offset'.*/reschedule(e1, offset)struct event	*e1;double		offset;{	double			date;	register struct event	*e;	e = e1;	date = Now.date + offset;	e->date = date;#	ifdef xTRACE	if (Trace)		printf("reschedule: type %d parm %d %d %d @ %.2f\n",			e->evcode, e->x, e->y, e->systemname, date);#	endif	return;}/***  UNSCHEDULE AN EVENT****	The event at slot 'e' is deleted.*/unschedule(e1)struct event	*e1;{	register struct event	*e;	e = e1;#	ifdef xTRACE	if (Trace)		printf("unschedule: type %d @ %.2f parm %d %d %d\n",			e->evcode, e->date, e->x, e->y, e->systemname);#	endif	Now.eventptr[e->evcode & E_EVENT] = 0;	e->date = 1e50;	e->evcode = 0;	return;}/***  Abreviated schedule routine****	Parameters are the event index and a factor for the time**	figure.*/struct event *xsched(ev1, factor, x, y, z)int	ev1;int	factor;int	x, y, z;{	register int	ev;	ev = ev1;	return (schedule(ev, -Param.eventdly[ev] * Param.time * log(franf()) / factor, x, y, z));}/***  Simplified reschedule routine****	Parameters are the event index, the initial date, and the**	division factor.  Look at the code to see what really happens.*/xresched(e1, ev1, factor)struct event	*e1;int		ev1;int		factor;{	register int		ev;	register struct event	*e;	ev = ev1;	e = e1;	reschedule(e, -Param.eventdly[ev] * Param.time * log(franf()) / factor);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -