/* T_ATIM.C - Test the attached timer a bit Written by John, February 1992 */ #include #include #include LOCAL_C VOID panic( INT num, INT errno) { UBYTE b[100]; p_errs(&b[p_atos(&b[0],"panic num %d - ",num)],errno); t_panic(&b[0]); } GLDEF_C main(VOID) { UWORD len; WORD stat; INT ret; UBYTE *pcb; ULONG timeout; UBYTE bb[10]; GLREF_D P_DEVICE p_wind,p_file; p_inst(&p_wind,&p_file,NULL_D); if (ret=p_loadldd("ATIMDVR.LDD")) panic(1,ret); if (ret=p_open(&pcb,"TTY:A")) panic(2,ret); if (ret=p_open(&pcb,"ATM:",0)) panic(3,ret); timeout=50L; /* 5 second timeout */ if (ret=p_iow(pcb,P_FSET,&timeout)) panic(4,ret); /* Once the device driver hierarchy has been set up the I/O requests are identical between a driver with and a driver without an attached timeout driver, except of course that the attached timeout driver will not wait forever if no characters can be read. */ len=10; p_ioc(pcb,P_FREAD,&stat,&bb[0],&len); p_iow(pcb,P_FCANCEL); p_waitstat(&stat); if (stat!=E_FILE_CANCEL) panic(5,stat); if ((ret=p_read(pcb,&bb[0],10))!=E_FILE_INACT) panic(6,ret); /* times out after 5 seconds */ p_close(pcb); p_close(pcb); if (ret=p_devdel("ATM",E_LDD)) panic(7,ret); return(0); }