Last modified on Mon Mar 09 19:03:55 PST 1992 by muller
MODULE; IMPORT Word; FROM Ctypes IMPORT int; PROCEDURE Utypes major (x: int): int = BEGIN RETURN Word.And (Word.Shift (x, -8), 8_0377); END major; PROCEDUREminor (x: int): int = BEGIN RETURN Word.And (x, 8_0377); END minor; PROCEDUREmakedev (x, y: int): dev_t = BEGIN RETURN Word.Or (Word.Shift (x, 8), y); END makedev; PROCEDUREhowmany (x, y: int): int = BEGIN RETURN (x + (y - 1)) DIV y; END howmany; PROCEDUREFD_SET (n: int; p: UNTRACED REF fd_set): int = BEGIN WITH l = p.fds_bits [n DIV NFDBITS] DO l := Word.Or (l, Word.Shift (1, n MOD NFDBITS)); RETURN l; END; END FD_SET; PROCEDUREFD_CLEAR (n: int; p: UNTRACED REF fd_set): int = BEGIN WITH l = p.fds_bits [n DIV NFDBITS] DO l := Word.And (l, Word.Not (Word.Shift (1, n MOD NFDBITS))); RETURN l; END; END FD_CLEAR; PROCEDUREFD_ISSET (n: int; p: UNTRACED REF fd_set): int = BEGIN WITH l = p.fds_bits [n DIV NFDBITS] DO RETURN Word.And (l, Word.Shift (1, n MOD NFDBITS)); END; END FD_ISSET; PROCEDUREFD_ZERO (p: UNTRACED REF fd_set) = BEGIN WITH a = p.fds_bits DO FOR i := FIRST (a) TO LAST (a) DO a[i] := 0; END; END; END FD_ZERO; BEGIN END Utypes.