Annotation of researchv9/jtools/man/man3/request.3, revision 1.1.1.1

1.1       root        1: .TH REQUEST 3
                      2: .CT 2 comm_term time_man proc_man
                      3: .SH NAME
                      4: request, own, wait, alarm, sleep, nap, kbdchar, rcvchar, realtime, sendchar, sendnchars, \- 5620 I/O requests
                      5: .SH SYNOPSIS
                      6: .B #include <jerq.h>
                      7: .PP
                      8: .B void request(r) int r;
                      9: .PP
                     10: .B int own(r) int r;
                     11: .PP
                     12: .B int wait(r) int r;
                     13: .PP
                     14: .B void alarm(t) unsigned t;
                     15: .PP
                     16: .B void sleep(t) unsigned t;
                     17: .PP
                     18: .B void nap(t) unsigned t;
                     19: .PP
                     20: .B long realtime();
                     21: .PP
                     22: .B int kbdchar();
                     23: .PP
                     24: .B int rcvchar();
                     25: .PP
                     26: .B void sendchar(c) int c;
                     27: .PP
                     28: .B "void sendnchars(n, cp) int n; char *cp;"
                     29: .SH DESCRIPTION
                     30: .I Request
                     31: announces a program's intent to use I/O devices and resources,
                     32: and must be called once early in a program, before
                     33: .IR initdisplay .
                     34: The bit vector
                     35: .I r
                     36: indicates which resources are to be used by
                     37: OR'ing together one or more of the elements
                     38: .B KBD
                     39: (keyboard),
                     40: .BR MOUSE ,
                     41: .B RCV
                     42: (characters received by terminal from Unix),
                     43: .B SEND
                     44: (characters sent from terminal to Unix)
                     45: and
                     46: .BR ALARM .
                     47: For example,
                     48: .B request(MOUSE|KBD)
                     49: indicates that the process
                     50: wants to use the mouse and keyboard.
                     51: All resource except
                     52: .B RCV
                     53: are always implicitly requested.
                     54: .PP
                     55: .I Own
                     56: returns a bit vector
                     57: of which I/O resources have data available.
                     58: For example,
                     59: .BR own()&KBD
                     60: indicates
                     61: whether a character is available to be read by
                     62: .I kbdchar
                     63: (see below),
                     64: .BR own()&RCV
                     65: indicates
                     66: whether a character is available to be read by
                     67: .I rcvchar
                     68: (see below) and,
                     69: .B own()&ALARM
                     70: indicates whether the alarm timer has fired.
                     71: .PP
                     72: .IR Wait 's
                     73: argument
                     74: .I r
                     75: is a bit vector composed as for
                     76: .IR request .
                     77: .I Wait
                     78: suspends the process,
                     79: enabling others,
                     80: until at least one of the requested resources is available.
                     81: The return value is a bit vector indicating which of the requested resources
                     82: are available \(em the same as
                     83: .BR own()&r .
                     84: .PP
                     85: Processes wishing to poll for input may call
                     86: .BR wait(CPU) ;
                     87: it will return as soon as all available input has been queued.
                     88: .B CPU
                     89: is a fake resource which is always
                     90: requested.
                     91: The
                     92: .B SEND
                     93: pseudo-resource is unused;
                     94: .B wait(SEND)
                     95: always succeeds.
                     96: .PP
                     97: .I Alarm
                     98: starts a timer which will fire
                     99: .I t
                    100: ticks (60ths of a second) into the future.
                    101: A pseudo-resource
                    102: .B ALARM
                    103: can be used to check the status of the timer with
                    104: .I own
                    105: or
                    106: .IR wait .
                    107: .PP
                    108: .I Nap
                    109: is equivalent to
                    110: .B wait(MOUSE)
                    111: in the emulator library.
                    112: It blocks the process until a new window event is received.
                    113: .PP
                    114: .I Sleep
                    115: delays the process for
                    116: .I t
                    117: ticks of a 60Hz clock.
                    118: .I Sleep
                    119: does not interfere with
                    120: .IR alarm ,
                    121: and vice versa.
                    122: .PP
                    123: .I Realtime
                    124: returns the number of 60Hz clock ticks since 1970 mod 32.
                    125: .PP
                    126: .I Kbdchar
                    127: returns the next keyboard character typed to the process.
                    128: If no characters have been typed, or
                    129: .B KBD
                    130: has not been
                    131: .IR request ed,
                    132: .I kbdchar
                    133: returns
                    134: \-1.
                    135: .PP
                    136: .I Rcvchar
                    137: returns the next character received from the host,
                    138: typically written on the standard output of the
                    139: companion
                    140: .I host
                    141: process.
                    142: If there are no characters available, or
                    143: .B RCV
                    144: has not been
                    145: .IR request ed,
                    146: .I rcvchar
                    147: returns
                    148: \-1.
                    149: .PP
                    150: .I Sendchar
                    151: sends a single byte to the
                    152: .I host
                    153: process.
                    154: .I Sendnchars
                    155: sends to the
                    156: .I host
                    157: process
                    158: .I n
                    159: characters pointed to by
                    160: .IR p .
                    161: .SH EXAMPLES
                    162: .EX
                    163: request(KBD|RCV);
                    164: for(;;){
                    165:        r=wait(KBD|RCV);
                    166:        if(r&KBD)
                    167:                keyboard(kbdchar());
                    168:        if(r&RCV)
                    169:                receive(rcvchar());
                    170: }
                    171: .EE
                    172: .PD0
                    173: .IP
                    174: Take input from either the keyboard or the host.
                    175: .PD
                    176: .SH SEE ALSO
                    177: .IR button (3)

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.