7 Interface to the reincarnation server
10 #include <minix/bitmap.h>
11 #include <minix/com.h>
13 #define SERVICE_LOGIN "service" /* passwd file entry for services */
15 /* RSS definitions. */
18 #define RSS_IRQ_ALL (RSS_NR_IRQ+1)
19 #define RSS_IO_ALL (RSS_NR_IO+1)
20 #define RSS_IPC_ALL "IPC_ALL"
21 #define RSS_IPC_ALL_SYS "IPC_ALL_SYS"
24 #define RSS_COPY 0x01 /* keep an in-memory copy of the binary */
25 #define RSS_REUSE 0x04 /* Try to reuse previously copied binary */
26 #define RSS_NOBLOCK 0x08 /* unblock caller immediately */
27 #define RSS_REPLICA 0x10 /* keep a replica of the service */
28 #define RSS_SELF_LU 0x20 /* perform self update */
29 #define RSS_SYS_BASIC_CALLS 0x40 /* include basic kernel calls */
30 #define RSS_VM_BASIC_CALLS 0x80 /* include basic vm calls */
31 #define RSS_NO_BIN_EXP 0x100 /* suppress binary exponential offset */
33 /* Common definitions. */
34 #define RS_NR_CONTROL 8
35 #define RS_NR_PCI_DEVICE 32
36 #define RS_NR_PCI_CLASS 4
37 #define RS_MAX_LABEL_LEN 16
39 /* CPU special values */
40 #define RS_CPU_DEFAULT -1 /* use the default cpu or do not change the current one */
41 #define RS_CPU_BSP -2 /* use the bootstrap cpu */
43 /* Labels are copied over separately. */
56 #define NO_SUB_VID 0xffff
57 #define NO_SUB_DID 0xffff
64 /* Arguments needed to start a new driver or server */
71 endpoint_t rss_sigmgr
;
72 endpoint_t rss_scheduler
;
80 int rss_irq
[RSS_NR_IRQ
];
82 struct { unsigned base
; unsigned len
; } rss_io
[RSS_NR_IO
];
84 struct rs_pci_id rss_pci_id
[RS_NR_PCI_DEVICE
];
86 struct rs_pci_class rss_pci_class
[RS_NR_PCI_CLASS
];
87 bitchunk_t rss_system
[SYS_CALL_MASK_SIZE
];
88 struct rss_label rss_label
;
91 bitchunk_t rss_vm
[VM_CALL_MASK_SIZE
];
93 struct rss_label rss_control
[RS_NR_CONTROL
];
98 * must be at the end of the structure for binary compatibility with
104 /* ACL information for access to PCI devices */
107 char rsp_label
[RS_MAX_LABEL_LEN
];
110 struct rs_pci_id rsp_device
[RS_NR_PCI_DEVICE
];
112 struct rs_pci_class rsp_class
[RS_NR_PCI_CLASS
];
115 /* Definition of a public entry of the system process table. */
117 short in_use
; /* set when the entry is in use */
118 unsigned sys_flags
; /* sys flags */
119 endpoint_t endpoint
; /* process endpoint number */
121 devmajor_t dev_nr
; /* major device number or NO_DEV */
123 char label
[RS_MAX_LABEL_LEN
]; /* label of this service */
124 char proc_name
[RS_MAX_LABEL_LEN
]; /* process name of this service */
126 bitchunk_t vm_call_mask
[VM_CALL_MASK_SIZE
]; /* vm call mask */
128 struct rs_pci pci_acl
; /* pci acl */
132 /* Return whether the given boot process is a user process, as opposed to a
133 * system process. Only usable by core services during SEF initialization.
135 #define IS_RPUB_BOOT_USR(rpub) ((rpub)->endpoint == INIT_PROC_NR)
137 int minix_rs_lookup(const char *name
, endpoint_t
*value
);