|
|
1.1 root 1: #define _DDI_DKI 1
2: #define _SYSV4 1
3:
4: /*
5: * This program performs some simple processing on a device master-file,
6: * mdevice (4) as specified in the "System File and Devices Reference
7: * Manual" for Unix System V, Release 4.
8: *
9: * The first part of the program inhales the 'mdevice' file. Other processing
10: * is dependent on the internal details of the character-device interface
11: * used by Coherent - our aim is to supply details for a mapping layer that
12: * converts the Coherent device system calling format.
13: */
14: /*
15: *-IMPORTS:
16: * <sys/compat.h>
17: * CONST
18: * PROTO
19: * ARGS ()
20: * LOCAL
21: * <stdlib.h>
22: * EXIT_SUCCESS
23: * EXIT_FAILURE
24: * NULL
25: * free ()
26: * malloc ()
27: * <unistd.h>
28: * STDERR_FILENO
29: * "mdev.h"
30: * read_mdev_file ()
31: * "sdev.h"
32: * read_sdev_file ()
33: * "symbol.h"
34: * symbol_init ()
35: * "assign.h"
36: * assign_imajors ()
37: * "mkconf.c"
38: * write_conf_c ()
39: */
40:
41: #include <sys/compat.h>
42: #include <stdlib.h>
43: #include <unistd.h>
44:
45: #include "mdev.h"
46: #include "sdev.h"
47: #include "mtune.h"
48: #include "stune.h"
49: #include "symbol.h"
50: #include "assign.h"
51: #include "mkconf.h"
52:
53: /*
54: * Some ancient systems do not define EXIT_SUCCESS or EXIT_FAILURE.
55: */
56:
57: #ifndef EXIT_SUCCESS
58: #define EXIT_SUCCESS 0
59: #define EXIT_FAILURE 1
60: #endif
61:
62:
63: #ifdef USE_PROTO
64: void usage (void)
65: #else
66: void
67: usage ()
68: #endif
69: {
70: static char usage_msg [] = {
71: "Usage:\t-d\tGenerate device configuration tables and makefiles\n"
72: "\t-t\tGenerate tunable parameter tables\n"
73: };
74:
75: write (STDERR_FILENO, usage_msg, sizeof (usage_msg) - 1);
76: }
77:
78:
79: #ifdef USE_PROTO
80: int main (int argc, char * argv [])
81: #else
82: int
83: main (argc, argv)
84: int argc;
85: char * argv [];
86: #endif
87: {
88: extinfo_t * extinfop;
89: int do_devices = 0;
90: int do_tune = 0;
91: int i;
92:
93: symbol_init ();
94:
95: for (i = 1 ; i < argc ; i ++) {
96: int switches;
97: int j;
98:
99: if (argv [i][0] != '-') {
100: usage ();
101: return EXIT_FAILURE;
102: }
103:
104: switches = strlen (argv [i]);
105:
106: for (j = 1 ; j < switches ; j ++) {
107:
108: switch (argv [i][j]) {
109:
110: case 'd':
111: do_devices ++;
112: break;
113:
114: case 't':
115: do_tune ++;
116: break;
117:
118: default:
119: usage ();
120: return EXIT_FAILURE;
121: }
122: }
123: }
124:
125: if (! do_devices && ! do_tune) {
126: usage ();
127: return EXIT_FAILURE;
128: }
129:
130: if (do_devices) {
131: read_mdev_file ("mdevice");
132: read_sdev_file ("sdevice");
133:
134: if ((extinfop = assign_imajors ()) != NULL) {
135:
136: write_conf_c ("conf.c", extinfop);
137: free (extinfop);
138: }
139:
140: write_link ("drvbld.mak", "template.mak");
141: }
142:
143: if (do_tune) {
144: read_mtune_file ("mtune");
145: read_stune_file ("stune");
146: write_conf_h ("conf.h");
147: }
148:
149: return EXIT_SUCCESS;
150: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.