Bladeren bron

Linux Lin interface modules generators added

Alexander Shiryaev 12 jaren geleden
bovenliggende
commit
0a926c3fa3
30 gewijzigde bestanden met toevoegingen van 1184 en 152 verwijderingen
  1. BIN
      BlackBox/_LinuxOpenBSD_/Comm/Mod/V24.odc
  2. 9 9
      BlackBox/_Linux_/Lin/Mod/Ioctl.txt
  3. 77 77
      BlackBox/_Linux_/Lin/Mod/Termios.txt
  4. 17 0
      BlackBox/_Linux_/Lin/Mod/gen-Ioctl/Ioctl.txt.templ
  5. 22 0
      BlackBox/_Linux_/Lin/Mod/gen-Ioctl/Makefile
  6. 1 0
      BlackBox/_Linux_/Lin/Mod/gen-Ioctl/dumpdefs.py
  7. 30 0
      BlackBox/_Linux_/Lin/Mod/gen-Ioctl/mkioctl.c
  8. 1 0
      BlackBox/_Linux_/Lin/Mod/gen-Ioctl/untempl.py
  9. 1 0
      BlackBox/_Linux_/Lin/Mod/gen-Libc/dumpdefs.py
  10. 1 0
      BlackBox/_Linux_/Lin/Mod/gen-Libc/untempl.py
  11. 19 0
      BlackBox/_Linux_/Lin/Mod/gen-Termios/Makefile
  12. 40 0
      BlackBox/_Linux_/Lin/Mod/gen-Termios/Termios.txt.templ
  13. 1 0
      BlackBox/_Linux_/Lin/Mod/gen-Termios/dumpdefs.py
  14. 1 0
      BlackBox/_Linux_/Lin/Mod/gen-Termios/untempl.py
  15. 9 9
      BlackBox/_OpenBSD_/Lin/Mod/Ioctl.txt
  16. 55 57
      BlackBox/_OpenBSD_/Lin/Mod/Termios.txt
  17. 17 0
      BlackBox/_OpenBSD_/Lin/Mod/gen-Ioctl/Ioctl.txt.templ
  18. 22 0
      BlackBox/_OpenBSD_/Lin/Mod/gen-Ioctl/Makefile
  19. 1 0
      BlackBox/_OpenBSD_/Lin/Mod/gen-Ioctl/dumpdefs.py
  20. 36 0
      BlackBox/_OpenBSD_/Lin/Mod/gen-Ioctl/mkioctl.c
  21. 1 0
      BlackBox/_OpenBSD_/Lin/Mod/gen-Ioctl/untempl.py
  22. 491 0
      BlackBox/_OpenBSD_/Lin/Mod/gen-Libc/Libc.txt.templ
  23. 62 0
      BlackBox/_OpenBSD_/Lin/Mod/gen-Libc/Makefile
  24. 138 0
      BlackBox/_OpenBSD_/Lin/Mod/gen-Libc/dumpdefs.py
  25. 25 0
      BlackBox/_OpenBSD_/Lin/Mod/gen-Libc/sizeofs.c
  26. 39 0
      BlackBox/_OpenBSD_/Lin/Mod/gen-Libc/untempl.py
  27. 21 0
      BlackBox/_OpenBSD_/Lin/Mod/gen-Termios/Makefile
  28. 45 0
      BlackBox/_OpenBSD_/Lin/Mod/gen-Termios/Termios.txt.templ
  29. 1 0
      BlackBox/_OpenBSD_/Lin/Mod/gen-Termios/dumpdefs.py
  30. 1 0
      BlackBox/_OpenBSD_/Lin/Mod/gen-Termios/untempl.py

BIN
BlackBox/_LinuxOpenBSD_/Comm/Mod/V24.odc


+ 9 - 9
BlackBox/_Linux_/Lin/Mod/Ioctl.txt

@@ -9,15 +9,15 @@ MODULE LinIoctl ["libc.so.6"];
 
 	CONST
 		(* /usr/include/i386-linux-gnu/bits/ioctl-types.h *)
-			TIOCM_LE* = 001H;
-			TIOCM_DTR* = 002H;
-			TIOCM_RTS* = 004H;
-			TIOCM_ST* = 008H;
-			TIOCM_SR* = 010H;
-			TIOCM_CTS* = 020H;
-			TIOCM_CAR* = 040H;
-			TIOCM_RNG* = 080H;
-			TIOCM_DSR* = 100H;
+			TIOCM_LE* = {0};
+			TIOCM_DTR* = {1};
+			TIOCM_RTS* = {2};
+			TIOCM_ST* = {3};
+			TIOCM_SR* = {4};
+			TIOCM_CTS* = {5};
+			TIOCM_CAR* = {6};
+			TIOCM_RNG* = {7};
+			TIOCM_DSR* = {8};
 
 		FIOCLEX* = 21585;
 		FIONCLEX* = 21584;

+ 77 - 77
BlackBox/_Linux_/Lin/Mod/Termios.txt

@@ -28,84 +28,84 @@ MODULE LinTermios ["libc.so.6"];
 		VWERASE* = 14;
 		VLNEXT* = 15;
 		VEOL2* = 16;
-		IGNBRK* = 1;
-		BRKINT* = 2;
-		IGNPAR* = 4;
-		PARMRK* = 8;
-		INPCK* = 16;
-		ISTRIP* = 32;
-		INLCR* = 64;
-		IGNCR* = 128;
-		ICRNL* = 256;
-		IUCLC* = 512;
-		IXON* = 1024;
-		IXANY* = 2048;
-		IXOFF* = 4096;
-		IMAXBEL* = 8192;
-		IUTF8* = 16384;
-		OPOST* = 1;
-		OLCUC* = 2;
-		ONLCR* = 4;
-		OCRNL* = 8;
-		ONOCR* = 16;
-		ONLRET* = 32;
-		OFILL* = 64;
-		OFDEL* = 128;
-		VTDLY* = 16384;
-		VT0* = 0;
-		VT1* = 16384;
-		B0* = 0; (* hang up *)
-		B50* = 1;
-		B75* = 2;
-		B110* = 3;
-		B134* = 4;
-		B150* = 5;
-		B200* = 6;
-		B300* = 7;
-		B600* = 8;
-		B1200* = 9;
-		B1800* = 10;
-		B2400* = 11;
-		B4800* = 12;
-		B9600* = 13;
-		B19200* = 14;
-		B38400* = 15;
-		CSIZE* = 48;
-		CS5* = 0;
-		CS6* = 16;
-		CS7* = 32;
-		CS8* = 48;
-		CSTOPB* = 64;
-		CREAD* = 128;
-		PARENB* = 256;
-		PARODD* = 512;
-		HUPCL* = 1024;
-		CLOCAL* = 2048;
-		B57600* = 4097;
-		B115200* = 4098;
-		B230400* = 4099;
-		B460800* = 4100;
-		B500000* = 4101;
-		B576000* = 4102;
-		B921600* = 4103;
-		B1000000* = 4104;
-		B1152000* = 4105;
-		B1500000* = 4106;
-		B2000000* = 4107;
-		B2500000* = 4108;
-		B3000000* = 4109;
-		B3500000* = 4110;
-		B4000000* = 4111;
+		IGNBRK* = 1; (* {0} *)
+		BRKINT* = 2; (* {1} *)
+		IGNPAR* = 4; (* {2} *)
+		PARMRK* = 8; (* {3} *)
+		INPCK* = 16; (* {4} *)
+		ISTRIP* = 32; (* {5} *)
+		INLCR* = 64; (* {6} *)
+		IGNCR* = 128; (* {7} *)
+		ICRNL* = 256; (* {8} *)
+		IUCLC* = 512; (* {9} *)
+		IXON* = 1024; (* {10} *)
+		IXANY* = 2048; (* {11} *)
+		IXOFF* = 4096; (* {12} *)
+		IMAXBEL* = 8192; (* {13} *)
+		IUTF8* = 16384; (* {14} *)
+		OPOST* = 1; (* {0} *)
+		OLCUC* = 2; (* {1} *)
+		ONLCR* = 4; (* {2} *)
+		OCRNL* = 8; (* {3} *)
+		ONOCR* = 16; (* {4} *)
+		ONLRET* = 32; (* {5} *)
+		OFILL* = 64; (* {6} *)
+		OFDEL* = 128; (* {7} *)
+		VTDLY* = 16384; (* {14} *)
+		VT0* = 0; (* {} *)
+		VT1* = 16384; (* {14} *)
+		B0* = 0; (* {} *) (* hang up *)
+		B50* = 1; (* {0} *)
+		B75* = 2; (* {1} *)
+		B110* = 3; (* {0,1} *)
+		B134* = 4; (* {2} *)
+		B150* = 5; (* {0,2} *)
+		B200* = 6; (* {1,2} *)
+		B300* = 7; (* {0..2} *)
+		B600* = 8; (* {3} *)
+		B1200* = 9; (* {0,3} *)
+		B1800* = 10; (* {1,3} *)
+		B2400* = 11; (* {0,1,3} *)
+		B4800* = 12; (* {2,3} *)
+		B9600* = 13; (* {0,2,3} *)
+		B19200* = 14; (* {1..3} *)
+		B38400* = 15; (* {0..3} *)
+		CSIZE* = 48; (* {4,5} *)
+		CS5* = 0; (* {} *)
+		CS6* = 16; (* {4} *)
+		CS7* = 32; (* {5} *)
+		CS8* = 48; (* {4,5} *)
+		CSTOPB* = 64; (* {6} *)
+		CREAD* = 128; (* {7} *)
+		PARENB* = 256; (* {8} *)
+		PARODD* = 512; (* {9} *)
+		HUPCL* = 1024; (* {10} *)
+		CLOCAL* = 2048; (* {11} *)
+		B57600* = 4097; (* {0,12} *)
+		B115200* = 4098; (* {1,12} *)
+		B230400* = 4099; (* {0,1,12} *)
+		B460800* = 4100; (* {2,12} *)
+		B500000* = 4101; (* {0,2,12} *)
+		B576000* = 4102; (* {1,2,12} *)
+		B921600* = 4103; (* {0..2,12} *)
+		B1000000* = 4104; (* {3,12} *)
+		B1152000* = 4105; (* {0,3,12} *)
+		B1500000* = 4106; (* {1,3,12} *)
+		B2000000* = 4107; (* {0,1,3,12} *)
+		B2500000* = 4108; (* {2,3,12} *)
+		B3000000* = 4109; (* {0,2,3,12} *)
+		B3500000* = 4110; (* {1..3,12} *)
+		B4000000* = 4111; (* {0..3,12} *)
 		__MAX_BAUD* = B4000000;
-		ISIG* = 1;
-		ICANON* = 2;
-		ECHO* = 8;
-		ECHOE* = 16;
-		ECHOK* = 32;
-		ECHONL* = 64;
-		NOFLSH* = 128;
-		TOSTOP* = 256;
-		IEXTEN* = 32768;
+		ISIG* = 1; (* {0} *)
+		ICANON* = 2; (* {1} *)
+		ECHO* = 8; (* {3} *)
+		ECHOE* = 16; (* {4} *)
+		ECHOK* = 32; (* {5} *)
+		ECHONL* = 64; (* {6} *)
+		NOFLSH* = 128; (* {7} *)
+		TOSTOP* = 256; (* {8} *)
+		IEXTEN* = 32768; (* {15} *)
 		TCOOFF* = 0;
 		TCOON* = 1;
 		TCIOFF* = 2;

+ 17 - 0
BlackBox/_Linux_/Lin/Mod/gen-Ioctl/Ioctl.txt.templ

@@ -0,0 +1,17 @@
+MODULE LinIoctl ["libc.so.6"];
+
+	(*
+		A. V. Shiryaev, 2012.11
+
+		Linux
+		i386
+	*)
+
+	CONST
+		(* /usr/include/i386-linux-gnu/bits/ioctl-types.h *)
+%%defs-ioctl1%%
+%%defs-ioctl%%
+	PROCEDURE [ccall] ioctl0* ["ioctl"] (d: INTEGER; req: INTEGER): INTEGER;
+	PROCEDURE [ccall] ioctl1* ["ioctl"] (d: INTEGER; req: INTEGER; VAR arg: INTEGER): INTEGER;
+
+END LinIoctl.

+ 22 - 0
BlackBox/_Linux_/Lin/Mod/gen-Ioctl/Makefile

@@ -0,0 +1,22 @@
+# This is GNU Makefile
+#    BSD       GNU
+# ${.TARGET}    $@
+# ${.ALLSRC}    $^
+# ${.IMPSRC}    $<
+
+all: mkioctl Ioctl.txt
+
+PY = python2.7
+DEFS = defs-ioctl1 defs-ioctl
+
+defs-ioctl: mkioctl
+	./mkioctl > $@
+
+Ioctl.txt: Ioctl.txt.templ ${DEFS}
+	${PY} ./untempl.py Ioctl.txt.templ $@
+
+defs-ioctl1:
+	./dumpdefs.py 3 0 s /usr/include/i386-linux-gnu/bits/ioctl-types.h | grep TIOCM_ > $@
+
+clean:
+	rm -f mkioctl Ioctl.txt ${DEFS}

+ 1 - 0
BlackBox/_Linux_/Lin/Mod/gen-Ioctl/dumpdefs.py

@@ -0,0 +1 @@
+../gen-Libc/dumpdefs.py

+ 30 - 0
BlackBox/_Linux_/Lin/Mod/gen-Ioctl/mkioctl.c

@@ -0,0 +1,30 @@
+#include <sys/ioctl.h>
+#include <stdio.h>
+
+#define PREFIX "\t\t"
+
+void D (const char *s, int ctl)
+{
+	printf("%s%s* = %d;\n", PREFIX, s, ctl);
+}
+
+int main (int argc, char *argv[])
+{
+	D("FIOCLEX", FIOCLEX);
+	D("FIONCLEX", FIONCLEX);
+	D("FIONREAD", FIONREAD);
+	D("FIONBIO", FIONBIO);
+	D("FIOASYNC", FIOASYNC);
+
+	D("TIOCMGET", TIOCMGET);
+	D("TIOCMSET", TIOCMSET);
+	D("TIOCEXCL", TIOCEXCL);
+	D("TIOCNXCL", TIOCNXCL);
+	D("TIOCOUTQ", TIOCOUTQ);
+	D("TIOCSBRK", TIOCSBRK);
+	D("TIOCCBRK", TIOCCBRK);
+	D("TIOCMBIS", TIOCMBIS);
+	D("TIOCMBIC", TIOCMBIC);
+
+	return 0;
+}

+ 1 - 0
BlackBox/_Linux_/Lin/Mod/gen-Ioctl/untempl.py

@@ -0,0 +1 @@
+../gen-Libc/untempl.py

+ 1 - 0
BlackBox/_Linux_/Lin/Mod/gen-Libc/dumpdefs.py

@@ -0,0 +1 @@
+../../../../_OpenBSD_/Lin/Mod/gen-Libc/dumpdefs.py

+ 1 - 0
BlackBox/_Linux_/Lin/Mod/gen-Libc/untempl.py

@@ -0,0 +1 @@
+../../../../_OpenBSD_/Lin/Mod/gen-Libc/untempl.py

+ 19 - 0
BlackBox/_Linux_/Lin/Mod/gen-Termios/Makefile

@@ -0,0 +1,19 @@
+# This is GNU Makefile
+#    BSD       GNU
+# ${.TARGET}    $@
+# ${.ALLSRC}    $^
+# ${.IMPSRC}    $<
+
+all: Termios.txt
+
+PY = python2.7
+DEFS = defs-termios
+
+Termios.txt: Termios.txt.templ ${DEFS}
+	${PY} ./untempl.py Termios.txt.templ $@
+
+defs-termios:
+	./dumpdefs.py 2 0 i /usr/include/i386-linux-gnu/bits/termios.h > $@
+
+clean:
+	rm -f Termios.txt ${DEFS}

+ 40 - 0
BlackBox/_Linux_/Lin/Mod/gen-Termios/Termios.txt.templ

@@ -0,0 +1,40 @@
+MODULE LinTermios ["libc.so.6"];
+
+	(*
+		A. V. Shiryaev, 2012.11
+
+		Linux
+		i386
+	*)
+
+	CONST
+%%defs-termios%%
+	TYPE
+		tcflag_t* = INTEGER; (* unsigned int *)
+		cc_t* = SHORTCHAR; (* unsigned char *)
+		speed_t* = INTEGER; (* unsigned int *)
+		termios* = RECORD [untagged]
+			c_iflag*: tcflag_t; (* input mode flags *)
+			c_oflag*: tcflag_t; (* output mode flags *)
+			c_cflag*: tcflag_t; (* control mode flags *)
+			c_lflag*: tcflag_t; (* local mode flags *)
+			c_line*: cc_t; (* line discipline *)
+			cc_c*: ARRAY [untagged] NCCS OF cc_t; (* control chars *)
+			c_ispeed*: INTEGER; (* input speed *)
+			c_ospeed*: INTEGER; (* output speed *)
+		END;
+
+	(* POSIX.1 *)
+	PROCEDURE [ccall] cfgetispeed* (VAR tp: termios): speed_t;
+	PROCEDURE [ccall] cfsetispeed* (VAR tp: termios; ispeed: speed_t): INTEGER;
+	PROCEDURE [ccall] cfgetospeed* (VAR tp: termios): speed_t;
+	PROCEDURE [ccall] cfsetospeed* (VAR tp: termios; ospeed: speed_t): INTEGER;
+	PROCEDURE [ccall] tcgetattr* (fd: INTEGER; VAR tp: termios): INTEGER;
+	PROCEDURE [ccall] tcsetattr* (fd: INTEGER; action: INTEGER; VAR tp: termios): INTEGER;
+
+	PROCEDURE [ccall] tcdrain* (fd: INTEGER): INTEGER;
+	PROCEDURE [ccall] tcflow* (fd: INTEGER; action: INTEGER): INTEGER;
+	PROCEDURE [ccall] tcflush* (fd: INTEGER; action: INTEGER): INTEGER;
+	PROCEDURE [ccall] tcsendbreak* (fd: INTEGER; len: INTEGER): INTEGER;
+
+END LinTermios.

+ 1 - 0
BlackBox/_Linux_/Lin/Mod/gen-Termios/dumpdefs.py

@@ -0,0 +1 @@
+../gen-Libc/dumpdefs.py

+ 1 - 0
BlackBox/_Linux_/Lin/Mod/gen-Termios/untempl.py

@@ -0,0 +1 @@
+../gen-Libc/untempl.py

+ 9 - 9
BlackBox/_OpenBSD_/Lin/Mod/Ioctl.txt

@@ -9,15 +9,15 @@ MODULE LinIoctl ["libc.so.66.0"];
 
 	CONST
 		(* /usr/include/sys/ttycom.h *)
-			TIOCM_LE* = 1; (* line enable *)
-			TIOCM_DTR* = 2; (* data terminal ready *)
-			TIOCM_RTS* = 4; (* request to send *)
-			TIOCM_ST* = 8; (* secondary transmit *)
-			TIOCM_SR* = 16; (* secondary receive *)
-			TIOCM_CTS* = 32; (* clear to send *)
-			TIOCM_CAR* = 64; (* carrier detect *)
-			TIOCM_RNG* = 128; (* ring *)
-			TIOCM_DSR* = 256; (* data set ready *)
+			TIOCM_LE* = {0}; (* line enable *)
+			TIOCM_DTR* = {1}; (* data terminal ready *)
+			TIOCM_RTS* = {2}; (* request to send *)
+			TIOCM_ST* = {3}; (* secondary transmit *)
+			TIOCM_SR* = {4}; (* secondary receive *)
+			TIOCM_CTS* = {5}; (* clear to send *)
+			TIOCM_CAR* = {6}; (* carrier detect *)
+			TIOCM_RNG* = {7}; (* ring *)
+			TIOCM_DSR* = {8}; (* data set ready *)
 
 		FIOCLEX* = 536897025;
 		FIONCLEX* = 536897026;

+ 55 - 57
BlackBox/_OpenBSD_/Lin/Mod/Termios.txt

@@ -20,39 +20,39 @@ MODULE LinTermios ["libc.so.66.0"];
 		VMIN* = 16; (* !ICANON *)
 		VTIME* = 17; (* !ICANON *)
 		NCCS* = 20;
-		IGNBRK* = 00000001H; (* ignore BREAK condition *)
-		BRKINT* = 00000002H; (* map BREAK to SIGINT *)
-		IGNPAR* = 00000004H; (* ignore (discard) parity errors *)
-		PARMRK* = 00000008H; (* mark parity and framing errors *)
-		INPCK* = 00000010H; (* enable checking of parity errors *)
-		ISTRIP* = 00000020H; (* strip 8th bit off chars *)
-		INLCR* = 00000040H; (* map NL into CR *)
-		IGNCR* = 00000080H; (* ignore CR *)
-		ICRNL* = 00000100H; (* map CR to NL (ala CRMOD) *)
-		IXON* = 00000200H; (* enable output flow control *)
-		IXOFF* = 00000400H; (* enable input flow control *)
-		OPOST* = 00000001H; (* enable following output processing *)
-		CSIZE* = 00000300H; (* character size mask *)
-		CS5* = 00000000H; (* 5 bits (pseudo) *)
-		CS6* = 00000100H; (* 6 bits *)
-		CS7* = 00000200H; (* 7 bits *)
-		CS8* = 00000300H; (* 8 bits *)
-		CSTOPB* = 00000400H; (* send 2 stop bits *)
-		CREAD* = 00000800H; (* enable receiver *)
-		PARENB* = 00001000H; (* parity enable *)
-		PARODD* = 00002000H; (* odd parity, else even *)
-		HUPCL* = 00004000H; (* hang up on last close *)
-		CLOCAL* = 00008000H; (* ignore modem status lines *)
-		ECHOE* = 00000002H; (* visually erase chars *)
-		ECHOK* = 00000004H; (* echo NL after line kill *)
-		ECHO* = 00000008H; (* enable echoing *)
-		ECHONL* = 00000010H; (* echo NL even if ECHO is off *)
-		ISIG* = 00000080H; (* enable signals INTR, QUIT, [D]SUSP *)
-		ICANON* = 00000100H; (* canonicalize input lines *)
-		IEXTEN* = 00000400H; (* enable DISCARD and LNEXT *)
-		EXTPROC* = 00000800H; (* external processing *)
-		TOSTOP* = 00400000H; (* stop background jobs from output *)
-		NOFLSH* = 80000000H; (* don't flush after interrupt *)
+		IGNBRK* = 00000001H; (* {0} *) (* ignore BREAK condition *)
+		BRKINT* = 00000002H; (* {1} *) (* map BREAK to SIGINT *)
+		IGNPAR* = 00000004H; (* {2} *) (* ignore (discard) parity errors *)
+		PARMRK* = 00000008H; (* {3} *) (* mark parity and framing errors *)
+		INPCK* = 00000010H; (* {4} *) (* enable checking of parity errors *)
+		ISTRIP* = 00000020H; (* {5} *) (* strip 8th bit off chars *)
+		INLCR* = 00000040H; (* {6} *) (* map NL into CR *)
+		IGNCR* = 00000080H; (* {7} *) (* ignore CR *)
+		ICRNL* = 00000100H; (* {8} *) (* map CR to NL (ala CRMOD) *)
+		IXON* = 00000200H; (* {9} *) (* enable output flow control *)
+		IXOFF* = 00000400H; (* {10} *) (* enable input flow control *)
+		OPOST* = 00000001H; (* {0} *) (* enable following output processing *)
+		CSIZE* = 00000300H; (* {8,9} *) (* character size mask *)
+		CS5* = 00000000H; (* {} *) (* 5 bits (pseudo) *)
+		CS6* = 00000100H; (* {8} *) (* 6 bits *)
+		CS7* = 00000200H; (* {9} *) (* 7 bits *)
+		CS8* = 00000300H; (* {8,9} *) (* 8 bits *)
+		CSTOPB* = 00000400H; (* {10} *) (* send 2 stop bits *)
+		CREAD* = 00000800H; (* {11} *) (* enable receiver *)
+		PARENB* = 00001000H; (* {12} *) (* parity enable *)
+		PARODD* = 00002000H; (* {13} *) (* odd parity, else even *)
+		HUPCL* = 00004000H; (* {14} *) (* hang up on last close *)
+		CLOCAL* = 00008000H; (* {15} *) (* ignore modem status lines *)
+		ECHOE* = 00000002H; (* {1} *) (* visually erase chars *)
+		ECHOK* = 00000004H; (* {2} *) (* echo NL after line kill *)
+		ECHO* = 00000008H; (* {3} *) (* enable echoing *)
+		ECHONL* = 00000010H; (* {4} *) (* echo NL even if ECHO is off *)
+		ISIG* = 00000080H; (* {7} *) (* enable signals INTR, QUIT, [D]SUSP *)
+		ICANON* = 00000100H; (* {8} *) (* canonicalize input lines *)
+		IEXTEN* = 00000400H; (* {10} *) (* enable DISCARD and LNEXT *)
+		EXTPROC* = 00000800H; (* {11} *) (* external processing *)
+		TOSTOP* = 00400000H; (* {22} *) (* stop background jobs from output *)
+		NOFLSH* = 80000000H; (* {31} *) (* don't flush after interrupt *)
 		TCSANOW* = 0; (* make change immediate *)
 		TCSADRAIN* = 1; (* drain output, then change *)
 		TCSAFLUSH* = 2; (* drain output, flush input *)
@@ -79,30 +79,28 @@ MODULE LinTermios ["libc.so.66.0"];
 		VLNEXT* = 14; (* IEXTEN *)
 		VDISCARD* = 15; (* IEXTEN *)
 		VSTATUS* = 18; (* ICANON *)
-		IXANY* = 00000800H; (* any char will restart after stop *)
-		IUCLC* = 00001000H; (* translate upper to lower case *)
-		IMAXBEL* = 00002000H; (* ring bell on input queue full *)
-		ONLCR* = 00000002H; (* map NL to CR-NL (ala CRMOD) *)
-		OXTABS* = 00000004H; (* expand tabs to spaces *)
-		ONOEOT* = 00000008H; (* discard EOT's (^D) on output *)
-		OCRNL* = 00000010H; (* map CR to NL *)
-		OLCUC* = 00000020H; (* translate lower case to upper case *)
-		ONOCR* = 00000040H; (* No CR output at column 0 *)
-		ONLRET* = 00000080H; (* NL performs the CR function *)
-		CIGNORE* = 00000001H; (* ignore control flags *)
-		CRTSCTS* = 00010000H; (* RTS/CTS full-duplex flow control *)
-		CRTS_IFLOW* = CRTSCTS; (* XXX compat *)
-		CCTS_OFLOW* = CRTSCTS; (* XXX compat *)
-		MDMBUF* = 00100000H; (* DTR/DCD hardware flow control *)
-		ECHOKE* = 00000001H; (* visual erase for line kill *)
-		ECHOPRT* = 00000020H; (* visual erase mode for hardcopy *)
-		ECHOCTL* = 00000040H; (* echo control chars as ^(Char) *)
-		ALTWERASE* = 00000200H; (* use alternate WERASE algorithm *)
-		FLUSHO* = 00800000H; (* output being flushed (state) *)
-		XCASE* = 01000000H; (* canonical upper/lower case *)
-		NOKERNINFO* = 02000000H; (* no kernel output from VSTATUS *)
-		PENDIN* = 20000000H; (* XXX retype pending input (state) *)
-		TCSASOFT* = 10H; (* flag - don't alter h.w. state *)
+		IXANY* = 00000800H; (* {11} *) (* any char will restart after stop *)
+		IUCLC* = 00001000H; (* {12} *) (* translate upper to lower case *)
+		IMAXBEL* = 00002000H; (* {13} *) (* ring bell on input queue full *)
+		ONLCR* = 00000002H; (* {1} *) (* map NL to CR-NL (ala CRMOD) *)
+		OXTABS* = 00000004H; (* {2} *) (* expand tabs to spaces *)
+		ONOEOT* = 00000008H; (* {3} *) (* discard EOT's (^D) on output *)
+		OCRNL* = 00000010H; (* {4} *) (* map CR to NL *)
+		OLCUC* = 00000020H; (* {5} *) (* translate lower case to upper case *)
+		ONOCR* = 00000040H; (* {6} *) (* No CR output at column 0 *)
+		ONLRET* = 00000080H; (* {7} *) (* NL performs the CR function *)
+		CIGNORE* = 00000001H; (* {0} *) (* ignore control flags *)
+		CRTSCTS* = 00010000H; (* {16} *) (* RTS/CTS full-duplex flow control *)
+		MDMBUF* = 00100000H; (* {20} *) (* DTR/DCD hardware flow control *)
+		ECHOKE* = 00000001H; (* {0} *) (* visual erase for line kill *)
+		ECHOPRT* = 00000020H; (* {5} *) (* visual erase mode for hardcopy *)
+		ECHOCTL* = 00000040H; (* {6} *) (* echo control chars as ^(Char) *)
+		ALTWERASE* = 00000200H; (* {9} *) (* use alternate WERASE algorithm *)
+		FLUSHO* = 00800000H; (* {23} *) (* output being flushed (state) *)
+		XCASE* = 01000000H; (* {24} *) (* canonical upper/lower case *)
+		NOKERNINFO* = 02000000H; (* {25} *) (* no kernel output from VSTATUS *)
+		PENDIN* = 20000000H; (* {29} *) (* XXX retype pending input (state) *)
+		TCSASOFT* = 10H; (* {4} *) (* flag - don't alter h.w. state *)
 		B7200* = 7200;
 		B14400* = 14400;
 		B28800* = 28800;

+ 17 - 0
BlackBox/_OpenBSD_/Lin/Mod/gen-Ioctl/Ioctl.txt.templ

@@ -0,0 +1,17 @@
+MODULE LinIoctl ["libc.so.66.0"];
+
+	(*
+		A. V. Shiryaev, 2012.11
+
+		OpenBSD 5.2
+		32-bit
+	*)
+
+	CONST
+		(* /usr/include/sys/ttycom.h *)
+%%defs-ttycom%%
+%%defs-ioctl%%
+	PROCEDURE [ccall] ioctl0* ["ioctl"] (d: INTEGER; req: INTEGER): INTEGER;
+	PROCEDURE [ccall] ioctl1* ["ioctl"] (d: INTEGER; req: INTEGER; VAR arg: INTEGER): INTEGER;
+
+END LinIoctl.

+ 22 - 0
BlackBox/_OpenBSD_/Lin/Mod/gen-Ioctl/Makefile

@@ -0,0 +1,22 @@
+# This is BSD Makefile
+#    BSD       GNU
+# ${.TARGET}    $@
+# ${.ALLSRC}    $^
+# ${.IMPSRC}    $<
+
+all: mkioctl Ioctl.txt
+
+PY = python2.7
+DEFS = defs-ttycom defs-ioctl
+
+defs-ioctl: mkioctl
+	./mkioctl > ${.TARGET}
+
+Ioctl.txt: Ioctl.txt.templ ${DEFS}
+	${PY} ./untempl.py Ioctl.txt.templ ${.TARGET}
+
+defs-ttycom:
+	./dumpdefs.py 3 1 s /usr/include/sys/ttycom.h | grep TIOCM_ > ${.TARGET}
+
+clean:
+	rm -f mkioctl Ioctl.txt ${DEFS}

+ 1 - 0
BlackBox/_OpenBSD_/Lin/Mod/gen-Ioctl/dumpdefs.py

@@ -0,0 +1 @@
+../gen-Libc/dumpdefs.py

+ 36 - 0
BlackBox/_OpenBSD_/Lin/Mod/gen-Ioctl/mkioctl.c

@@ -0,0 +1,36 @@
+#include <sys/ioctl.h>
+#include <stdio.h>
+
+#define PREFIX "\t\t"
+
+void D (const char *s, int ctl)
+{
+	printf("%s%s* = %d;\n", PREFIX, s, ctl);
+}
+
+int main (int argc, char *argv[])
+{
+	D("FIOCLEX", FIOCLEX);
+	D("FIONCLEX", FIONCLEX);
+	D("FIONREAD", FIONREAD);
+	D("FIONBIO", FIONBIO);
+	D("FIOASYNC", FIOASYNC);
+	D("FIOSETOWN", FIOSETOWN);
+	D("FIOGETOWN", FIOGETOWN);
+
+	D("TIOCMGET", TIOCMGET);
+	D("TIOCMSET", TIOCMSET);
+	D("TIOCEXCL", TIOCEXCL);
+	D("TIOCNXCL", TIOCNXCL);
+	D("TIOCFLUSH", TIOCFLUSH);
+	D("TIOCDRAIN", TIOCDRAIN);
+	D("TIOCOUTQ", TIOCOUTQ);
+	D("TIOCSBRK", TIOCSBRK);
+	D("TIOCCBRK", TIOCCBRK);
+	D("TIOCSDTR", TIOCSDTR);
+	D("TIOCCDTR", TIOCCDTR);
+	D("TIOCMBIS", TIOCMBIS);
+	D("TIOCMBIC", TIOCMBIC);
+
+	return 0;
+}

+ 1 - 0
BlackBox/_OpenBSD_/Lin/Mod/gen-Ioctl/untempl.py

@@ -0,0 +1 @@
+../gen-Libc/untempl.py

+ 491 - 0
BlackBox/_OpenBSD_/Lin/Mod/gen-Libc/Libc.txt.templ

@@ -0,0 +1,491 @@
+MODULE LinLibc ["libc.so.66.0"];
+
+	(*
+		A. V. Shiryaev, 2012.11
+
+		Based on Linux' LinLibc (OpenBUGS Lin/Mod/Libc.odc)
+
+		OpenBSD 5.2
+		32-bit
+	*)
+
+	IMPORT SYSTEM;
+
+	CONST
+		NULL* = 0H;
+		TRUE* = 1;
+		FALSE* = 0;
+
+		(* file constants *)
+		SEEK_SET* = 0;
+		SEEK_CUR* = 1;
+		SEEK_END* = 2;
+		NAME_MAX* = 255; (* OpenBSD /usr/include/sys/syslimits.h *)
+
+		(* The value of CLOCKS_PER_SEC is required to be 1 million on all   XSI-conformant systems.*)
+		CLOCKS_PER_SEC* = 100; (* OpenBSD 5.2 /usr/include/time.h CLOCKS_PER_SEC *)
+
+		(* temp directory defined in stdio.h *)
+		P_tmpdir* = "/tmp";
+
+		(* signal constants *)	(* Fake signal functions.  *)
+		(* OpenBSD 5.2 /usr/include/sys/signal.h *)
+		SIG_ERR* = -1; 	(* Error return.  *)
+		SIG_DFL* = 0;   	(* Default action.  *)
+		SIG_IGN* = 1;    	(* Ignore signal.  *)
+		SIG_HOLD* = 3;	(* Add signal to hold mask.  *) (* OpenBSD 5.2 /usr/include/sys/signalvar.h *)
+
+		(* Signals. *)
+		(* OpenBSD /usr/include/sys/signal.h *)
+%%defs-signal%%
+		(* Bits in `sa_flags'. *)
+%%defs-sa%%
+		(* Some aliases for the SA_ constants.  *)
+(*
+		SA_NOMASK* = SA_NODEFER;
+		SA_ONESHOT* = SA_RESETHAND;
+		SA_STACK* = SA_ONSTACK;
+*)
+
+		(* code values for siginfo_t.si_code *) 
+		(* OpenBSD /usr/include/sys/siginfo.h *)
+%%defs-siginfo1%%
+
+		(* possible error constants for errno *)
+		(* OpenBSD /usr/include/sys/errno.h *)
+%%defs-errno%%
+
+		(* OpenBSD 5.2 /usr/include/i386/setjmp.h *)
+		_JBLEN = 10;
+
+		(* OpenBSD 5.2 /usr/include/sys/mman.h *)
+		MAP_FAILED* = -1;
+%%defs-mman%%
+
+		(* OpenBSD 5.2 /usr/include/i386/param.h *)
+		PAGE_SHIFT* = 12;
+		PAGE_SIZE* = 4096; (* LSL(1, PAGE_SHIFT) *)
+		PAGE_MASK* = PAGE_SIZE - 1;
+
+		(* OpenBSD 5.2: /usr/include/fcntl.h *)
+%%defs-fcntl%%
+
+		(* OpenBSD 5.2 /usr/include/unistd.h *)
+%%defs-sc%%
+
+		(* OpenBSD 5.2 /usr/include/sys/mman.h *)
+%%defs-madv%%
+		MADV_NORMAL* = POSIX_MADV_NORMAL;
+		MADV_RANDOM* = POSIX_MADV_RANDOM;
+		MADV_SEQUENTIAL* = POSIX_MADV_SEQUENTIAL;
+		MADV_WILLNEED* = POSIX_MADV_WILLNEED;
+		MADV_DONTNEED* = POSIX_MADV_DONTNEED;
+
+		(* OpenBSD 5.2 /usr/include/sys/signal.h *)
+		MINSIGSTKSZ* = 8192; (* minimum allowable stack *)
+		SIGSTKSZ* = MINSIGSTKSZ + 32768; (* recommended stack size *)
+
+		(* OpenBSD 5.2 /usr/include/sys/signal.h *)
+%%defs-sig%%
+
+	TYPE
+		(* OpenBSD OK *)
+		__ftw_func_t* = PROCEDURE (fileName: PtrSTR; VAR [nil] stat: stat_t; flag: INTEGER): INTEGER; (* OpenBSD 5.2: OK *)
+		PtrVoid* = INTEGER;
+		PtrSTR* = POINTER TO ARRAY [untagged] OF SHORTCHAR;
+		(* PtrWSTR* = POINTER TO ARRAY [untagged] OF CHAR; *)
+		PtrInt* = INTEGER;
+		StrArray* = POINTER TO ARRAY [untagged] OF PtrSTR;
+		PtrFILE* = INTEGER;
+		PtrDIR* = INTEGER;
+		PtrProc* = INTEGER;
+		clock_t* = INTEGER; (* OpenBSD 5.2 /usr/include/i386/_types.h: 32-bit *)
+
+		(* jmp_buf* = ARRAY [untagged] 6 OF INTEGER; (* bx, si, di, bp, sp, pc *) *)
+		jmp_buf* = ARRAY [untagged] _JBLEN OF INTEGER; (* OpenBSD 5.2 *)
+
+		mode_t* = SET; (* OpenBSD 5.2: 32-bit *)
+		off_t* = LONGINT; (* OpenBSD 5.2: 64-bit *)
+
+		SelectorFunc* = PROCEDURE (dirent: Dirent): INTEGER; (* OpenBSD 5.2: OK *)
+		CmpFunc* = PROCEDURE (VAR [nil] dirent1, dirent2: PtrDirent): INTEGER; (* OpenBSD 5.2: OK *)
+
+		size_t* = INTEGER; (* should be unsigned int *) (* OpenBSD 5.2: /usr/include/i386/_types.h: 32-bit *)
+		ssize_t* = INTEGER; (* signed int *) (* OpenBSD 5.2: /usr/include/i386/_types.h: 32-bit *)
+
+		sigjmp_buf* = RECORD [untagged] (* OpenBSD 5.2 *)
+			buf*: jmp_buf;
+
+			(* mask_was_saved*: INTEGER;
+			saved_mask*: sigset_t; *) (* OpenBSD *)
+
+			xxx: INTEGER;
+		END;
+
+		PtrDirent* = POINTER TO Dirent;
+		PtrDirentArray* = POINTER TO ARRAY [untagged] OF Dirent;
+
+		Dirent* = RECORD  [untagged] (* OpenBSD 5.2 /usr/include/sys/dirent.h *)
+			(*
+			d_ino*: INTEGER;	(* inode number *)
+			d_off*: off_t;	(* offset to this dirent *)
+			d_reclen*: SHORTINT;	(* length of this d_name *)
+			d_type*: BYTE;
+			d_name*: ARRAY[untagged]  NAME_MAX+1 OF SHORTCHAR;		(* file name (null-terminated) *)
+			*)
+
+			d_fileno*: INTEGER;
+			d_reclen*: SHORTINT;
+			d_type*: BYTE;
+			d_namlen*: BYTE;
+			d_name*: ARRAY [untagged] NAME_MAX + 1 (* 256 *) OF SHORTCHAR;
+		END;
+
+		pid_t* = INTEGER; (* OpenBSD 5.2: 32-bit *)
+		uid_t* = INTEGER; (* OpenBSD 5.2: 32-bit *)
+
+		sigval_t* = INTEGER; (* OpenBSD: 32-bit (union sigval) *)
+
+		siginfo_t* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/sys/siginfo.h *)
+			si_signo*: INTEGER; 	(* Signal number *) (* OpenBSD: 32-bit *)
+			si_code*: INTEGER;   	(* Signal code *) (* OpenBSD: 32-bit *)
+			si_errno*: INTEGER;  	(* An errno value *) (* OpenBSD: 32-bit *)
+
+			(* OpenBSD 5.2: 29 * 4 B below *)
+
+			si_pid*: pid_t;    	(* Sending process ID *)
+			si_uid*: uid_t;    	(* Real user ID of sending process *)
+			si_status*: INTEGER; 	(* Exit value or signal *) (* OpenBSD 5.2: 32-bit *)
+
+			(* si_utime*: clock_t;  	(* User time consumed *) *) (* OpenBSD: XXX *)
+			si_stime*: clock_t;  	(* System time consumed *)
+			(* si_value*: sigval_t;  	(* Signal value *) *) (* OpenBSD: XXX *)
+			(* si_int*: INTEGER;    	(* POSIX.1b signal *) *) (* OpenBSD: XXX *)
+			(* si_ptr*: PtrVoid;    	(* POSIX.1b signal *) *) (* OpenBSD: XXX *)
+			(* si_addr*: PtrVoid;   	(* Memory location which caused fault *) *) (* OpenBSD: XXX *)
+			(* si_band*: INTEGER;   	(* Band event *) *) (* OpenBSD: XXX *)
+			(* si_fd*: INTEGER;     	(* File descriptor *) *) (* OpenBSD: XXX *)
+
+			xxx: ARRAY [untagged] 25 OF INTEGER; (* OpenBSD *)
+		END;
+		Ptrsiginfo_t* = POINTER TO siginfo_t;
+
+		(* sigset_t* = ARRAY [untagged] 128 OF BYTE; *)
+		(* OpenBSD 5.2 /usr/include/sys/signal.h *)
+		(* sigset_t* = ARRAY [untagged] 4 OF BYTE; *)
+		sigset_t* = SET;
+
+		Ptrsigset_t* = INTEGER;
+		sigaction_t* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/sys/signal.h *)
+			sa_sigaction*: PROCEDURE [ccall] (sig: INTEGER; siginfo: Ptrsiginfo_t; ptr: Ptrucontext_t); (* union with sa_handler*: PtrProc;*)
+			sa_mask*: sigset_t;
+			sa_flags*: SET;
+			(* sa_restorer*: LONGINT; *) (* OpenBSD *)
+		END;
+
+		stack_t* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/sys/signal.h *)
+			ss_sp*: PtrVoid;
+			ss_size*: size_t; (* OpenBSD *)
+			ss_flags*: INTEGER; (* OpenBSD *)
+		END;
+
+		dev_t* = INTEGER; (* OpenBSD: 32-bit *)
+		gid_t* = INTEGER; (* OpenBSD: 32-bit *)
+
+		stat_t* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/sys/stat.h *)
+			st_dev*: dev_t;	(* device *) (* OpenBSD: 32-bit *)
+			(* __pad1: SHORTINT; *) (* OpenBSD *)
+			st_ino*: INTEGER;	(* 64? inode *) (* OpenBSD: 32-bit *)
+			st_mode*: mode_t;	(* protection *) (* OpenBSD: 32-bit *)
+			st_nlink*: INTEGER; 	(* number of hard links *) (* OpenBSD: 32-bit *)
+			st_uid*: uid_t;	(* user ID of owner *) (* OpenBSD: 32-bit *)
+			st_gid*: gid_t;	(* group ID of owner *) (* OpenBSD: 32-bit *)
+			st_rdev*: dev_t;	(* device type (if inode device) *) (* OpenBSD: 32-bit *)
+			st_lspare0*: INTEGER; (* OpenBSD *)
+			(* __pad2: SHORTINT; *) (* OpenBSD *)
+
+			(* OpenBSD *)
+			st_atime*: time_t;
+			st_atimensec*: INTEGER;
+			st_mtime*: time_t;
+			st_mtimensec*: INTEGER;
+			st_ctime*: time_t;
+			st_ctimensec*: INTEGER;
+
+			st_size*: off_t;	(* 64? total size, in bytes *) (* OpenBSD *)
+			st_blocks*: LONGINT; (* OpenBSD: 64-bit *)
+			st_blksize*: INTEGER;	(* blocksize for filesystem I/O *)
+			(* st_blocks*: INTEGER;	(* 64? number of blocks allocated *) *) (* OpenBSD *)
+			st_flags*: INTEGER; (* OpenBSD: 32-bit *)
+			st_gen*: INTEGER; (* OpenBSD: 32-bit *)
+			st_lspare1*: INTEGER; (* OpenBSD: 32-bit *)
+
+			(* OpenBSD
+			st_atime*: INTEGER;	(* time of last access *)
+			__unused1:  INTEGER;
+			st_mtime*: INTEGER;	(* time of last modification *)
+			__unused2:  INTEGER;
+			st_ctime*: INTEGER;	(* time of last change *)
+			__unused3:  INTEGER;
+			__unused4:  INTEGER;
+			__unused5:  INTEGER;
+			*)
+
+			(* OpenBSD *)
+			__st_birthtime*: time_t;
+			__st_birthtimensec*: INTEGER;
+			st_qspare*: ARRAY [untagged] 2 OF LONGINT;
+		END;
+
+		(* OpenBSD
+		fpreg* = RECORD [untagged]
+			significand*: ARRAY [untagged] 4 OF CHAR;
+			exponent*: CHAR;
+		END;
+		*)
+
+		(* OpenBSD *)
+		(*
+		fpstate* = RECORD [untagged]
+			cw*: INTEGER; 	(* unsigned long int *)
+			sw*: INTEGER; 	(* unsigned long int *)
+			tag*: INTEGER; 	(* unsigned long int *)
+			ipoff*: INTEGER; 	(* unsigned long int *)
+			cssel*: INTEGER; 	(* unsigned long int *)
+			dataoff*: INTEGER; 	(* unsigned long int *)
+			datasel*: INTEGER; 	(* unsigned long int *)
+			_st: ARRAY [untagged] 8 OF fpreg;
+			status*: INTEGER; 	(* unsigned long int *)
+		END;
+		*)
+		envxmm* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/i386/npx.h *)
+			(*0*)
+				en_cw*: SHORTINT; (* FPU Control Word *)
+				en_sw*: SHORTINT; (* FPU Status Word *)
+				en_tw*: BYTE; (* FPU Tag Word (abridged) *)
+				en_rsvd0*: BYTE;
+				en_opcode*: SHORTINT; (* FPU Opcode *)
+				en_fip*: INTEGER; (* FPU Instruction Pointer *)
+				en_fcs*: SHORTINT; (* FPU IP selector *)
+				en_rsvd1*: SHORTINT;
+			(*16*)
+				en_foo*: INTEGER; (* FPU Data pointer *)
+				en_fos*: SHORTINT; (* FPU Data pointer selector *)
+				en_rsvd2*: SHORTINT;
+				en_mxcsr*: INTEGER; (* MXCSR Register State *)
+				en_mxcsr_mask*: INTEGER; (* Mask for valid MXCSR bits (may be 0) *)
+		END;
+		(* FPU regsters in the extended save format. *)
+		fpaccxmm* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/i386/npx.h *)
+			fp_bytes*: ARRAY [untagged] 10 OF BYTE;
+			fp_rsvd*: ARRAY [untagged] 6 OF BYTE;
+		END;
+		(* SSE/SSE2 registers. *)
+		xmmreg* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/i386/npx.h *)
+			sse_bytes*: ARRAY [untagged] 16 OF BYTE;
+		END;
+		fpstate* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/i386/npx.h savefpu.savexmm *)
+			sv_env*: envxmm; (* control/status context *)
+			sv_ac*: ARRAY [untagged] 8 OF fpaccxmm; (* ST/MM regs *)
+			sv_xmmregs*: ARRAY [untagged] 8 OF xmmreg; (* XMM regs *)
+			sv_rsvd*: ARRAY [untagged] 16 * 14 OF BYTE;
+			(* 512-bytes --- end of hardware portion of save area *)
+			sv_ex_sw*: INTEGER; (* saved SW from last exception *)
+			sv_ex_tw*: INTEGER; (* saved TW from last exception *)
+		END;
+
+		(* OpenBSD
+		gregset_t* = ARRAY [untagged] 19 OF INTEGER;
+		*)
+		fpregset_t* = POINTER TO fpstate;
+
+		(* OpenBSD
+		mcontext_t*  = RECORD [untagged]
+			gregs*: gregset_t;
+			fpregs*: fpregset_t;
+			oldmask*: INTEGER;	(* unsigned long int *)
+			cr2*: INTEGER; 	(* unsigned long int *)
+		END;
+		*)
+
+		Ptrucontext_t* = POINTER TO ucontext_t;
+		ucontext_t* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/i386/signal.h struct sigcontext *)
+			(*
+			uc_flags*: INTEGER;	(* unsigned long int *)
+			uc_link*: Ptrucontext_t;
+			uc_stack*: stack_t;
+			uc_mcontext*: mcontext_t;
+			uc_sigmask: sigset_t;
+			__fpregs_mem*: fpstate;
+			*)
+
+			sc_gs*: INTEGER;
+			sc_fs*: INTEGER;
+			sc_es*: INTEGER;
+			sc_ds*: INTEGER;
+			sc_edi*: INTEGER;
+			sc_esi*: INTEGER;
+			sc_ebp*: INTEGER;
+			sc_ebx*: INTEGER;
+			sc_edx*: INTEGER;
+			sc_ecx*: INTEGER;
+			sc_eax*: INTEGER;
+			(* XXX *)
+			sc_eip*: INTEGER;
+			sc_cs*: INTEGER;
+			sc_eflags*: INTEGER;
+			sc_esp*: INTEGER;
+			sc_ss*: INTEGER;
+
+			sc_onstack*: INTEGER; (* sigstack state to restore *)
+			sc_mask*: INTEGER; (* signal mask to restore *)
+			sc_trapno*: INTEGER; (* XXX should be above *)
+			sc_err*: INTEGER;
+
+			sc_fpstate*: fpregset_t; (* POINTER TO savefpu *)
+		END;
+
+		(* Times and Dates *)
+
+		tm* = POINTER TO tmDesc;
+		tmDesc* = RECORD [untagged] (* OpenBSD 5.2 /usr/include/time.h *)
+			tm_sec*: INTEGER;	(* seconds *)
+			tm_min*: INTEGER;	(* minutes *)
+			tm_hour*: INTEGER;	(* hours *)
+			tm_mday*: INTEGER;	(* day of the month *)
+			tm_mon*: INTEGER;	(* month *)
+			tm_year*: INTEGER;	(* year *)
+			tm_wday*: INTEGER;	(* day of the week *)
+			tm_yday*: INTEGER;	(* day in the year *)
+			tm_isdst*: INTEGER;	(* daylight saving time *)
+
+			tm_gmtoff*: INTEGER; (* OpenBSD *)
+			tm_zone*: PtrSTR; (* OpenBSD *)
+		END;
+
+		time_t* = INTEGER; (* OpenBSD 5.2 /usr/include/i386/_types.h: 32-bit *)
+
+		FILE = ARRAY [untagged] 88 OF BYTE; (* OpenBSD 5.2 /usr/include/stdio.h *)
+
+		wchar_t* = INTEGER; (* OpenBSD 5.2: 32-bit *)
+		PtrWSTR* = POINTER TO ARRAY [untagged] OF wchar_t;
+
+		(* OpenBSD 5.2 *)
+		sigaltstack_t* = RECORD [untagged]
+			ss_sp*: PtrVoid;
+			ss_size*: size_t;
+			ss_flags*: INTEGER;
+		END;
+
+	VAR
+		(* timezone*: INTEGER; (* seconds from GMT *) *) (* OpenBSD: not present *)
+		(* stdin*, stdout*, stderr* : PtrFILE; (* OpenBSD: not present *) *)
+
+		(* OpenBSD: stdin, stdout, stderr *)
+			__sF*: ARRAY [untagged] 3 OF FILE; (* OpenBSD 5.2 /usr/include/stdio.h *)
+			(*
+				stdin = SYSTEM.ADR(__sF[0])
+				stdout = SYSTEM.ADR(__sF[1])
+				stderr = SYSTEM.ADR(__sF[2])
+			*)
+
+	PROCEDURE [ccall] calloc* (nmemb, size: size_t): PtrVoid;
+	PROCEDURE [ccall] clock* (): clock_t;
+
+	PROCEDURE [ccall] closedir* (dir: PtrDIR): INTEGER;
+
+	PROCEDURE [ccall] chmod* (path: PtrSTR; mode: mode_t);
+	PROCEDURE [ccall] exit* (status: INTEGER);
+
+	PROCEDURE [ccall] fclose* (fp: PtrFILE): INTEGER;
+	PROCEDURE [ccall] fflush* (fp: PtrFILE): INTEGER;
+	PROCEDURE [ccall] fopen* (filename, mode: PtrSTR): PtrFILE;
+	PROCEDURE [ccall] feof* (fp: PtrFILE): INTEGER;
+	PROCEDURE [ccall] fread* (ptr: PtrVoid; size, nmemb: size_t; stream: PtrFILE): size_t;
+	PROCEDURE [ccall] fseek* (stream: PtrFILE; offset, origin: INTEGER): INTEGER;
+	PROCEDURE [ccall] free* (p: PtrVoid);
+
+	PROCEDURE [ccall] ftell* (stream: PtrFILE): (* LONGINT; *) INTEGER; (* OpenBSD 5.2 *)
+
+	PROCEDURE [ccall] ftw* (filename: PtrSTR; func: __ftw_func_t; maxfds: INTEGER): INTEGER;
+	PROCEDURE [ccall] fwrite* (ptr: PtrVoid; size, nmemb: size_t; stream: PtrFILE): size_t;
+	PROCEDURE [ccall] getcwd* (buf: PtrSTR; size: size_t): PtrSTR;
+
+	(* PROCEDURE [ccall] getcontext* (ucontext_t: Ptrucontext_t): INTEGER; *) (* OpenBSD *)
+
+	(* PROCEDURE [ccall] gets* (s: PtrSTR); *)
+	PROCEDURE [ccall] gets* (s: PtrSTR): PtrSTR; (* OpenBSD 5.2 *)
+
+	PROCEDURE [ccall] fgets* (s: PtrSTR; n: INTEGER; fp: PtrFILE): PtrSTR;
+	PROCEDURE [ccall] gmtime* (VAR timep: time_t): tm;
+	PROCEDURE [ccall] kill* (pid: pid_t; sig: INTEGER): INTEGER;
+	PROCEDURE [ccall] localtime* (VAR timep: time_t): tm;
+	PROCEDURE [ccall] malloc* (size: size_t): PtrVoid;
+	PROCEDURE [ccall] mkdir* (path: PtrSTR; mode: mode_t): INTEGER;
+	PROCEDURE [ccall] mktime* (timeptr: tm): time_t;
+	PROCEDURE [ccall] opendir* (filename: PtrSTR): PtrDIR;
+	PROCEDURE [ccall] printf* (s: PtrSTR): INTEGER;
+	PROCEDURE [ccall] readdir* (dir: PtrDIR): PtrDirent;
+	PROCEDURE [ccall] remove* (path: PtrSTR): INTEGER;
+	PROCEDURE [ccall] rename* (from, to: PtrSTR): INTEGER;
+	PROCEDURE [ccall] scandir* (dir: PtrDIR; namelist: PtrDirentArray; selector: SelectorFunc; cmp: CmpFunc): INTEGER;
+
+	(* PROCEDURE [ccall] setcontext* (ucontext_t: Ptrucontext_t): INTEGER; *) (* OpenBSD *)
+
+	PROCEDURE [ccall] setjmp* (VAR env: jmp_buf): INTEGER;
+	PROCEDURE [ccall] sigaction* (sig_num: INTEGER; VAR [nil] act: sigaction_t; VAR [nil] oldact: sigaction_t): INTEGER;
+	PROCEDURE [ccall] sigaddset* (set: Ptrsigset_t; sig: INTEGER): INTEGER;
+	PROCEDURE [ccall] sigdelset* (set: Ptrsigset_t; sig: INTEGER): INTEGER;
+	PROCEDURE [ccall] sigemptyset* (set: Ptrsigset_t): INTEGER;
+	PROCEDURE [ccall] sigfillset* (set: Ptrsigset_t): INTEGER;
+	PROCEDURE [ccall] sigismemeber* (set: Ptrsigset_t; sig: INTEGER): INTEGER;
+	PROCEDURE [ccall] siglongjmp* (VAR env: sigjmp_buf; val: INTEGER);
+
+	PROCEDURE [ccall] signal* (sig_num: INTEGER; sighandler: PtrProc): PtrProc;
+	(* PROCEDURE [ccall] sigsetjmp* ["__sigsetjmp"] (VAR env: sigjmp_buf; savemask: INTEGER): INTEGER; *)
+	PROCEDURE [ccall] sigsetjmp* (VAR env: sigjmp_buf; savemask: INTEGER): INTEGER; (* OpenBSD *)
+
+	(* OpenBSD *)
+	PROCEDURE [ccall] stat* (filename: PtrSTR; VAR buf: stat_t): INTEGER;  (* stat is a macro and expands to __xstat(3, filename, buf) *)
+(* OpenBSD: __xstat not present
+	PROCEDURE [ccall] __xstat* (version: INTEGER; filename: PtrSTR; VAR buf: stat_t): INTEGER;
+*)
+
+	PROCEDURE [ccall] strftime* (s: PtrSTR; max: size_t; format: PtrSTR; ptm: tm): size_t;
+	PROCEDURE [ccall] time* (VAR [nil] t: time_t): time_t;
+
+	(* PROCEDURE [ccall] __errno_location*(): INTEGER; *)
+	PROCEDURE [ccall] __errno_location* ["__errno"] (): INTEGER; (* OpenBSD *)
+
+	PROCEDURE [ccall] open* (path: PtrSTR; flags: SET; mode: mode_t): INTEGER;
+	PROCEDURE [ccall] close* (d: INTEGER): INTEGER;
+	PROCEDURE [ccall] read* (d: INTEGER; buf: PtrVoid; nbytes: size_t): ssize_t;
+	PROCEDURE [ccall] write* (d: INTEGER; buf: PtrVoid; nBytes: size_t): ssize_t;
+
+	(* OpenBSD *)
+	PROCEDURE [ccall] mprotect* (addr: PtrVoid; len: size_t; prot: SET): INTEGER;
+
+	(* OpenBSD 5.2 *)
+	PROCEDURE [ccall] madvise* (addr: PtrVoid; len: size_t; behav: INTEGER): INTEGER;
+
+	PROCEDURE [ccall] mmap* (addr: PtrVoid; len: size_t; prot: SET; flags: SET; fd: INTEGER; offset: off_t): PtrVoid;
+	PROCEDURE [ccall] munmap* (addr: PtrVoid; len: size_t): INTEGER;
+
+	PROCEDURE [ccall] getenv* (name: PtrSTR): PtrSTR;
+
+	(* OpenBSD 5.2: Ok *)
+	PROCEDURE [ccall] wctomb* (s: PtrSTR; wchar: wchar_t): INTEGER;
+	PROCEDURE [ccall] wcstombs* (s: PtrSTR; pwcs: PtrWSTR; n: size_t): size_t;
+	PROCEDURE [ccall] mbtowc* (pwc: PtrWSTR; s: PtrSTR; n: size_t): INTEGER;
+	PROCEDURE [ccall] mbstowcs* (pwcs: PtrWSTR; s: PtrSTR; n: size_t): size_t;
+
+	(* OpenBSD 5.2 *)
+	PROCEDURE [ccall] sysconf* (name: INTEGER): INTEGER;
+
+	PROCEDURE [ccall] sigaltstack* (VAR [nil] ss: sigaltstack_t; VAR [nil] oss: sigaltstack_t): INTEGER;
+
+	PROCEDURE [ccall] sigreturn* (ucontext_t: Ptrucontext_t): INTEGER;
+
+	PROCEDURE [ccall] sigprocmask* (how: INTEGER; VAR [nil] set: sigset_t; VAR [nil] oset: sigset_t): INTEGER;
+
+END LinLibc.

+ 62 - 0
BlackBox/_OpenBSD_/Lin/Mod/gen-Libc/Makefile

@@ -0,0 +1,62 @@
+# This is BSD Makefile
+#    BSD       GNU
+# ${.TARGET}    $@
+# ${.ALLSRC}    $^
+# ${.IMPSRC}    $<
+
+PY = python2.7
+
+DEFS = defs-errno defs-signal defs-sc defs-madv defs-siginfo defs-siginfo1 defs-sa defs-mman defs-fcntl defs-sig
+
+all: Libc.txt ${DEFS}
+
+Libc.txt: Libc.txt.templ ${DEFS} sizeofs
+	${PY} ./untempl.py Libc.txt.templ ${.TARGET}
+#	${PY} ./untempl2.py ${.TARGET}.tmp ${.TARGET}
+#	rm -f ${.TARGET}.tmp
+
+sizeofs: sizeofs.c
+	${CC} -O0 -g -o ${.TARGET} ${.ALLSRC}
+
+defs-errno:
+	./dumpdefs.py 2 0 i /usr/include/sys/errno.h > ${.TARGET}
+
+defs-signal:
+	./dumpdefs.py 2 1 i /usr/include/sys/signal.h > ${.TARGET}
+	./dumpdefs.py 2 2 i /usr/include/sys/signal.h | grep SIGWINCH >> ${.TARGET}
+	./dumpdefs.py 2 2 i /usr/include/sys/signal.h | grep SIGTHR >> ${.TARGET}
+
+defs-sig:
+	./dumpdefs.py 2 2 i /usr/include/sys/signal.h | grep SIG_ > ${.TARGET}
+
+defs-sa:
+	./dumpdefs.py 2 2 s /usr/include/sys/signal.h | grep "	SA_" > ${.TARGET}
+	./dumpdefs.py 2 3 s /usr/include/sys/signal.h | grep "	SA_" >> ${.TARGET}
+
+defs-mman:
+	./dumpdefs.py 2 0 s /usr/include/sys/mman.h | grep "	PROT_" > ${.TARGET}
+	./dumpdefs.py 2 0 s /usr/include/sys/mman.h | grep "	MAP_" >> ${.TARGET}
+
+defs-fcntl:
+	./dumpdefs.py 2 2 s /usr/include/fcntl.h | grep -v compat | grep "	O_" > ${.TARGET}
+	./dumpdefs.py 2 1 s /usr/include/fcntl.h | grep "	O_" >> ${.TARGET}
+
+defs-siginfo:
+	./dumpdefs.py 2 1 i /usr/include/sys/siginfo.h > ${.TARGET}
+	./dumpdefs.py 2 2 i /usr/include/sys/siginfo.h >> ${.TARGET}
+
+defs-sc:
+	./dumpdefs.py 2 1 i /usr/include/unistd.h | grep _SC_ > ${.TARGET}
+
+defs-madv:
+	./dumpdefs.py 2 0 i /usr/include/sys/mman.h | grep MADV > ${.TARGET}
+	./dumpdefs.py 2 1 i /usr/include/sys/mman.h | grep MADV >> ${.TARGET}
+
+defs-siginfo1:
+	./dumpdefs.py 2 2 i /usr/include/sys/siginfo.h | grep FPE_ > ${.TARGET}
+	./dumpdefs.py 2 2 i /usr/include/sys/siginfo.h | grep ILL_ >> ${.TARGET}
+	./dumpdefs.py 2 2 i /usr/include/sys/siginfo.h | grep SEGV_ >> ${.TARGET}
+	./dumpdefs.py 2 2 i /usr/include/sys/siginfo.h | grep BUS_ >> ${.TARGET}
+
+clean:
+	rm -f sizeofs ${DEFS} Libc.txt

+ 138 - 0
BlackBox/_OpenBSD_/Lin/Mod/gen-Libc/dumpdefs.py

@@ -0,0 +1,138 @@
+#! /usr/bin/env python2.7
+#
+# A. V. Shiryaev, 2012.09
+# simple *.h '#define' macro translator
+
+import sys, re
+
+INDENT = "\t"
+
+_p1 = re.compile('^#define\s+([^\s]+)\s+([A-Za-z0-9]+)\s*$')
+_p2 = re.compile('^#define\s+([^\s]+)\s+([^\s]+)\s+\/\*([^\*]+)\*\/\s*$')
+
+def mkset (x):
+	if x >= 0:
+		s = []
+		ss = 0
+		i = 0
+		while x != 0:
+			if x % 2 != 0:
+				if ss == 0:
+					si = i
+					sn = 1
+					ss = 1
+				elif i == si + sn:
+					sn = sn + 1
+				else:
+					if sn == 1:
+						s.append(str(si))
+					elif sn == 2:
+						s.append("%s,%s" % (si, si+1))
+					else:
+						s.append("%s..%s" % (si, si + sn - 1))
+					si = i
+					sn = 1
+			i = i + 1
+			x = x / 2
+		if ss == 1:
+			if sn == 1:
+				s.append(str(si))
+			elif sn == 2:
+				s.append("%s,%s" % (si, si+1))
+			else:
+				s.append("%s..%s" % (si, si + sn - 1))
+		return '{' + ','.join(s) + '}'
+	else:
+		return None
+
+def fixVal (x, tip):
+	if x.startswith('(') and x.endswith(')') and (x.count('(') == 1) and (x.count(')') == 1):
+		x = x[1:-1]
+
+	if x.startswith('0x'): # fix HEX
+		if tip == 'i':
+			if x[2] in ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9'):
+				return x[2:].upper() + "H"
+			else:
+				return "0" + x[2:].upper() + "H"
+		else:
+			return mkset(int(x, 16))
+	elif x[0] == '0': # fix OCT
+		if tip == 'i':
+			return str(int(x, 8))
+		else:
+			return mkset(int(x, 8))
+	else:
+		if tip == 'i':
+			return x
+		else:
+			try:
+				y = int(x)
+			except:
+				return x
+			else:
+				return mkset(y)
+
+def p (nIndents, sym, val, comment, val1):
+	r = [ "%s%s* = %s;" % (INDENT*nIndents, sym, val) ]
+	if (val1 != None) and (val != val1):
+		r.append( "(* %s *)" % (val1,) )
+	if comment:
+		r.append( "(* %s *)" % (comment,) )
+	print ' '.join(r)
+
+def isBits (s):
+	return (len(s) > 1) and s.startswith('0') # HEX or OCT
+
+def main ():
+	if len(sys.argv) == 5:
+		nIndents = int(sys.argv[1])
+		if sys.argv[2] == '*':
+			level = None
+		else:
+			level = int(sys.argv[2])
+		tip = sys.argv[3]
+		assert tip in ('i', 's')
+
+		fh = open(sys.argv[4], 'r')
+		st = 0
+		for line in fh.readlines():
+			if line.startswith("#if"):
+				# print line,
+				st = st + 1
+			elif line.startswith("#endif"):
+				# print line,
+				st = st - 1
+			elif (level == None) or (st == level):
+				r = _p2.match(line)
+				if r:
+					sym = r.group(1)
+					val = fixVal(r.group(2), tip)
+					if isBits(r.group(2)):
+						val1 = fixVal(r.group(2), 's')
+					else:
+						val1 = None
+					comment = r.group(3).strip()
+					p(nIndents, sym, val, comment, val1)
+				else:
+					r = _p1.match(line)
+					if r:
+						sym = r.group(1)
+						val = fixVal(r.group(2), tip)
+						if isBits(r.group(2)):
+							val1 = fixVal(r.group(2), 's')
+						else:
+							val1 = None
+						comment = None
+						p(nIndents, sym, val, comment, val1)
+	else:
+		print "usage: %s nIndents level type file.h" % (sys.argv[0],)
+		print "	level:"
+		print "		number: selected level"
+		print "		*: all levels"
+		print "	type:"
+		print "		i: integer"
+		print "		s: set"
+
+if __name__ == '__main__':
+	main()

+ 25 - 0
BlackBox/_OpenBSD_/Lin/Mod/gen-Libc/sizeofs.c

@@ -0,0 +1,25 @@
+#include <sys/types.h>
+
+#include <sys/signal.h>
+
+#include <stdlib.h>
+
+#include <stdio.h>
+
+#define SZ(A, B) printf("%s %d\n", A, sizeof(B));
+
+int main ()
+{
+	SZ("size_t", size_t);
+	SZ("ssize_t", ssize_t);
+	SZ("off_t", off_t);
+	SZ("clock_t", clock_t);
+	SZ("mode_t", mode_t);
+	SZ("pid_t", pid_t);
+	SZ("uid_t", uid_t);
+	SZ("sigset_t", sigset_t);
+
+	SZ("wchar_t", wchar_t);
+
+	return 0;
+}

+ 39 - 0
BlackBox/_OpenBSD_/Lin/Mod/gen-Libc/untempl.py

@@ -0,0 +1,39 @@
+#! /usr/bin/env python2.7
+
+import sys, re
+
+def readFile (fileName):
+	fh = open(fileName, 'rb')
+	x = fh.read()
+	fh.close()
+	return x
+
+def writeFile (fileName, x):
+	fh = open(fileName, 'wb')
+	fh.write(x)
+	fh.close()
+
+_p = re.compile('\%\%([^\%]+)\%\%')
+
+def untempl (x):
+	while True:
+		r = _p.search(x)
+		if r:
+			fileName = r.group(1)
+			y = readFile(fileName)
+			toRepl = "%%%%%s%%%%" % (fileName,)
+			x = x.replace(toRepl, y)
+		else:
+			break
+	return x
+
+def main ():
+	if len(sys.argv) != 3:
+		print "usage: %s oldfile newfile" % (sys.argv[0],)
+	else:
+		old = readFile(sys.argv[1])
+		new = untempl(old)
+		writeFile(sys.argv[2], new)
+
+if __name__ == '__main__':
+	main()

+ 21 - 0
BlackBox/_OpenBSD_/Lin/Mod/gen-Termios/Makefile

@@ -0,0 +1,21 @@
+# This is BSD Makefile
+#    BSD       GNU
+# ${.TARGET}    $@
+# ${.ALLSRC}    $^
+# ${.IMPSRC}    $<
+
+all: Termios.txt
+
+PY = python2.7
+DEFS = defs-termios
+
+Termios.txt: Termios.txt.templ ${DEFS}
+	${PY} ./untempl.py Termios.txt.templ ${.TARGET}
+
+defs-termios:
+	./dumpdefs.py 2 0 i /usr/include/termios.h > ${.TARGET}
+	./dumpdefs.py 2 1 i /usr/include/termios.h | grep -v compat >> ${.TARGET}
+	./dumpdefs.py 2 2 i /usr/include/termios.h | grep -v compat | grep -v CHWFLOW >> ${.TARGET}
+
+clean:
+	rm -f Termios.txt ${DEFS}

+ 45 - 0
BlackBox/_OpenBSD_/Lin/Mod/gen-Termios/Termios.txt.templ

@@ -0,0 +1,45 @@
+MODULE LinTermios ["libc.so.66.0"];
+
+	(*
+		A. V. Shiryaev, 2012.11
+
+		OpenBSD 5.2
+		32-bit
+	*)
+
+	CONST
+%%defs-termios%%
+	TYPE
+		tcflag_t* = INTEGER; (* unsigned int *)
+		cc_t* = SHORTCHAR; (* unsigned char *)
+		speed_t* = INTEGER; (* unsigned int *)
+		termios* = RECORD [untagged]
+			c_iflag*: tcflag_t; (* input flags *)
+			c_oflag*: tcflag_t; (* output flags *)
+			c_cflag*: tcflag_t; (* control flags *)
+			c_lflag*: tcflag_t; (* local flags *)
+			c_cc*: ARRAY [untagged] NCCS OF cc_t; (* control chars *)
+			c_ispeed*: INTEGER; (* input speed *)
+			c_ospeed*: INTEGER; (* output speed *)
+		END;
+
+	(* POSIX.1 *)
+	PROCEDURE [ccall] cfgetispeed* (VAR tp: termios): speed_t;
+	PROCEDURE [ccall] cfsetispeed* (VAR tp: termios; ispeed: speed_t): INTEGER;
+	PROCEDURE [ccall] cfgetospeed* (VAR tp: termios): speed_t;
+	PROCEDURE [ccall] cfsetospeed* (VAR tp: termios; ospeed: speed_t): INTEGER;
+	PROCEDURE [ccall] tcgetattr* (fd: INTEGER; VAR tp: termios): INTEGER;
+	PROCEDURE [ccall] tcsetattr* (fd: INTEGER; action: INTEGER; VAR tp: termios): INTEGER;
+
+	PROCEDURE [ccall] tcdrain* (fd: INTEGER): INTEGER;
+	PROCEDURE [ccall] tcflow* (fd: INTEGER; action: INTEGER): INTEGER;
+	PROCEDURE [ccall] tcflush* (fd: INTEGER; action: INTEGER): INTEGER;
+	PROCEDURE [ccall] tcsendbreak* (fd: INTEGER; len: INTEGER): INTEGER;
+
+	(* extensions *)
+(*
+	PROCEDURE [ccall] cfsetspeed* (VAR tp: termios; speed: speed_t): INTEGER;
+	PROCEDURE [ccall] cfmakeraw* (VAR tp: termios);
+*)
+
+END LinTermios.

+ 1 - 0
BlackBox/_OpenBSD_/Lin/Mod/gen-Termios/dumpdefs.py

@@ -0,0 +1 @@
+../gen-Libc/dumpdefs.py

+ 1 - 0
BlackBox/_OpenBSD_/Lin/Mod/gen-Termios/untempl.py

@@ -0,0 +1 @@
+../gen-Libc/untempl.py