service utility can par cpu option in system.conf
- does not have any effect, solely for debugging SMP - backward compatible with older RS instance
This commit is contained in:
parent
1b7d95df29
commit
f248bffc9e
@ -412,6 +412,7 @@ PRIVATE void fatal(char *fmt, ...)
|
|||||||
#define KW_SCHEDULER "scheduler"
|
#define KW_SCHEDULER "scheduler"
|
||||||
#define KW_PRIORITY "priority"
|
#define KW_PRIORITY "priority"
|
||||||
#define KW_QUANTUM "quantum"
|
#define KW_QUANTUM "quantum"
|
||||||
|
#define KW_CPU "cpu"
|
||||||
#define KW_IRQ "irq"
|
#define KW_IRQ "irq"
|
||||||
#define KW_IO "io"
|
#define KW_IO "io"
|
||||||
#define KW_PCI "pci"
|
#define KW_PCI "pci"
|
||||||
@ -649,7 +650,7 @@ PRIVATE void do_priority(config_t *cpe)
|
|||||||
fatal("do_priority: priority %d out of range at %s:%d",
|
fatal("do_priority: priority %d out of range at %s:%d",
|
||||||
priority_val, cpe->file, cpe->line);
|
priority_val, cpe->file, cpe->line);
|
||||||
}
|
}
|
||||||
rs_start.rss_priority= (unsigned) priority_val;
|
rs_start.rss_priority= priority_val;
|
||||||
}
|
}
|
||||||
|
|
||||||
PRIVATE void do_quantum(config_t *cpe)
|
PRIVATE void do_quantum(config_t *cpe)
|
||||||
@ -687,7 +688,45 @@ PRIVATE void do_quantum(config_t *cpe)
|
|||||||
fatal("do_quantum: quantum %d out of range at %s:%d",
|
fatal("do_quantum: quantum %d out of range at %s:%d",
|
||||||
quantum_val, cpe->file, cpe->line);
|
quantum_val, cpe->file, cpe->line);
|
||||||
}
|
}
|
||||||
rs_start.rss_quantum= (unsigned) quantum_val;
|
rs_start.rss_quantum= quantum_val;
|
||||||
|
}
|
||||||
|
|
||||||
|
PRIVATE void do_cpu(config_t *cpe)
|
||||||
|
{
|
||||||
|
int cpu;
|
||||||
|
char *check;
|
||||||
|
|
||||||
|
/* Process a quantum value */
|
||||||
|
if (cpe->next != NULL)
|
||||||
|
{
|
||||||
|
fatal("do_cpu: just one value expected at %s:%d",
|
||||||
|
cpe->file, cpe->line);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (cpe->flags & CFG_SUBLIST)
|
||||||
|
{
|
||||||
|
fatal("do_cpu: unexpected sublist at %s:%d",
|
||||||
|
cpe->file, cpe->line);
|
||||||
|
}
|
||||||
|
if (cpe->flags & CFG_STRING)
|
||||||
|
{
|
||||||
|
fatal("do_cpu: unexpected string at %s:%d",
|
||||||
|
cpe->file, cpe->line);
|
||||||
|
}
|
||||||
|
cpu= strtol(cpe->word, &check, 0);
|
||||||
|
if (check[0] != '\0')
|
||||||
|
{
|
||||||
|
fatal("do_cpu: bad value '%s' at %s:%d",
|
||||||
|
cpe->word, cpe->file, cpe->line);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cpu <= 0)
|
||||||
|
{
|
||||||
|
fatal("do_cpu: %d out of range at %s:%d",
|
||||||
|
cpu, cpe->file, cpe->line);
|
||||||
|
}
|
||||||
|
rs_start.rss_cpu= cpu;
|
||||||
}
|
}
|
||||||
|
|
||||||
PRIVATE void do_irq(config_t *cpe)
|
PRIVATE void do_irq(config_t *cpe)
|
||||||
@ -1261,6 +1300,11 @@ PRIVATE void do_service(config_t *cpe, config_t *config)
|
|||||||
do_quantum(cpe->next);
|
do_quantum(cpe->next);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (strcmp(cpe->word, KW_CPU) == 0)
|
||||||
|
{
|
||||||
|
do_cpu(cpe->next);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (strcmp(cpe->word, KW_IRQ) == 0)
|
if (strcmp(cpe->word, KW_IRQ) == 0)
|
||||||
{
|
{
|
||||||
do_irq(cpe->next);
|
do_irq(cpe->next);
|
||||||
@ -1417,6 +1461,7 @@ PUBLIC int main(int argc, char **argv)
|
|||||||
rs_start.rss_scheduler= DSRV_SCH;
|
rs_start.rss_scheduler= DSRV_SCH;
|
||||||
rs_start.rss_priority= DSRV_Q;
|
rs_start.rss_priority= DSRV_Q;
|
||||||
rs_start.rss_quantum= DSRV_QT;
|
rs_start.rss_quantum= DSRV_QT;
|
||||||
|
rs_start.rss_cpu = DSRV_CPU;
|
||||||
|
|
||||||
if (req_config) {
|
if (req_config) {
|
||||||
assert(progname);
|
assert(progname);
|
||||||
|
|||||||
@ -85,6 +85,10 @@
|
|||||||
/* default scheduling quanta */
|
/* default scheduling quanta */
|
||||||
#define USER_QUANTUM 200
|
#define USER_QUANTUM 200
|
||||||
|
|
||||||
|
/* defualt user process cpu */
|
||||||
|
#define USER_DEFAULT_CPU -1 /* use the default cpu or do not change the
|
||||||
|
current one */
|
||||||
|
|
||||||
/*===========================================================================*
|
/*===========================================================================*
|
||||||
* There are no user-settable parameters after this line *
|
* There are no user-settable parameters after this line *
|
||||||
*===========================================================================*/
|
*===========================================================================*/
|
||||||
|
|||||||
@ -89,4 +89,7 @@
|
|||||||
#define DSRV_QT USER_QUANTUM /* dynamic system services */
|
#define DSRV_QT USER_QUANTUM /* dynamic system services */
|
||||||
#define USR_QT USER_QUANTUM /* user processes */
|
#define USR_QT USER_QUANTUM /* user processes */
|
||||||
|
|
||||||
|
/* default CPU */
|
||||||
|
#define DSRV_CPU USER_DEFAULT_CPU
|
||||||
|
|
||||||
#endif /* _MINIX_PRIV_H */
|
#endif /* _MINIX_PRIV_H */
|
||||||
|
|||||||
@ -71,6 +71,14 @@ struct rs_start
|
|||||||
bitchunk_t rss_vm[VM_CALL_MASK_SIZE];
|
bitchunk_t rss_vm[VM_CALL_MASK_SIZE];
|
||||||
int rss_nr_control;
|
int rss_nr_control;
|
||||||
struct rss_label rss_control[RS_NR_CONTROL];
|
struct rss_label rss_control[RS_NR_CONTROL];
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SMP specific data
|
||||||
|
*
|
||||||
|
* must be at the end of the structure for binary compatibility with
|
||||||
|
* non-smp sysytems
|
||||||
|
*/
|
||||||
|
int rss_cpu;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* ACL information for access to PCI devices */
|
/* ACL information for access to PCI devices */
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user