. use library function to parse memory string
. remove unused variables and some other gcc warnings
This commit is contained in:
parent
3275602598
commit
448376ee7e
@ -15,6 +15,7 @@
|
|||||||
#include <minix/com.h>
|
#include <minix/com.h>
|
||||||
#include <minix/endpoint.h>
|
#include <minix/endpoint.h>
|
||||||
#include <minix/minlib.h>
|
#include <minix/minlib.h>
|
||||||
|
#include <minix/type.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
@ -23,12 +24,12 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <archconst.h>
|
#include <archconst.h>
|
||||||
#include <archtypes.h>
|
#include <archtypes.h>
|
||||||
|
#include <env.h>
|
||||||
#include "mproc.h"
|
#include "mproc.h"
|
||||||
#include "param.h"
|
#include "param.h"
|
||||||
|
|
||||||
#include "../../kernel/const.h"
|
#include "../../kernel/const.h"
|
||||||
#include "../../kernel/config.h"
|
#include "../../kernel/config.h"
|
||||||
#include "../../kernel/type.h"
|
|
||||||
#include "../../kernel/proc.h"
|
#include "../../kernel/proc.h"
|
||||||
|
|
||||||
#if ENABLE_SYSCALL_STATS
|
#if ENABLE_SYSCALL_STATS
|
||||||
@ -233,7 +234,6 @@ PRIVATE void pm_init()
|
|||||||
static char ign_sigs[] = { SIGCHLD, SIGWINCH, SIGCONT };
|
static char ign_sigs[] = { SIGCHLD, SIGWINCH, SIGCONT };
|
||||||
static char mess_sigs[] = { SIGTERM, SIGHUP, SIGABRT, SIGQUIT };
|
static char mess_sigs[] = { SIGTERM, SIGHUP, SIGABRT, SIGQUIT };
|
||||||
register struct mproc *rmp;
|
register struct mproc *rmp;
|
||||||
register int i;
|
|
||||||
register char *sig_ptr;
|
register char *sig_ptr;
|
||||||
phys_clicks total_clicks, minix_clicks, free_clicks;
|
phys_clicks total_clicks, minix_clicks, free_clicks;
|
||||||
message mess;
|
message mess;
|
||||||
@ -379,16 +379,6 @@ int queue; /* store mem chunks here */
|
|||||||
return nice_val;
|
return nice_val;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if _WORD_SIZE == 2
|
|
||||||
/* In real mode only 1M can be addressed, and in 16-bit protected we can go
|
|
||||||
* no further than we can count in clicks. (The 286 is further limited by
|
|
||||||
* its 24 bit address bus, but we can assume in that case that no more than
|
|
||||||
* 16M memory is reported by the BIOS.)
|
|
||||||
*/
|
|
||||||
#define MAX_REAL 0x00100000L
|
|
||||||
#define MAX_16BIT (0xFFF0L << CLICK_SHIFT)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*===========================================================================*
|
/*===========================================================================*
|
||||||
* get_mem_chunks *
|
* get_mem_chunks *
|
||||||
*===========================================================================*/
|
*===========================================================================*/
|
||||||
@ -396,59 +386,30 @@ PRIVATE void get_mem_chunks(mem_chunks)
|
|||||||
struct memory *mem_chunks; /* store mem chunks here */
|
struct memory *mem_chunks; /* store mem chunks here */
|
||||||
{
|
{
|
||||||
/* Initialize the free memory list from the 'memory' boot variable. Translate
|
/* Initialize the free memory list from the 'memory' boot variable. Translate
|
||||||
* the byte offsets and sizes in this list to clicks, properly truncated. Also
|
* the byte offsets and sizes in this list to clicks, properly truncated.
|
||||||
* make sure that we don't exceed the maximum address space of the 286 or the
|
|
||||||
* 8086, i.e. when running in 16-bit protected mode or real mode.
|
|
||||||
*/
|
*/
|
||||||
long base, size, limit;
|
long base, size, limit;
|
||||||
char *s, *end; /* use to parse boot variable */
|
int i;
|
||||||
int i, done = 0;
|
|
||||||
struct memory *memp;
|
struct memory *memp;
|
||||||
#if _WORD_SIZE == 2
|
|
||||||
unsigned long max_address;
|
/* Obtain and parse memory from system environment. */
|
||||||
struct machine machine;
|
if(env_memory_parse(mem_chunks, NR_MEMS) != OK)
|
||||||
if (OK != (i=sys_getmachine(&machine)))
|
panic(__FILE__,"couldn't obtain memory chunks", NO_NUM);
|
||||||
panic(__FILE__, "sys_getmachine failed", i);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Initialize everything to zero. */
|
/* Round physical memory to clicks. */
|
||||||
for (i = 0; i < NR_MEMS; i++) {
|
for (i = 0; i < NR_MEMS; i++) {
|
||||||
memp = &mem_chunks[i]; /* next mem chunk is stored here */
|
memp = &mem_chunks[i]; /* next mem chunk is stored here */
|
||||||
memp->base = memp->size = 0;
|
base = mem_chunks[i].base;
|
||||||
}
|
size = mem_chunks[i].size;
|
||||||
|
|
||||||
/* The available memory is determined by MINIX' boot loader as a list of
|
|
||||||
* (base:size)-pairs in boothead.s. The 'memory' boot variable is set in
|
|
||||||
* in boot.s. The format is "b0:s0,b1:s1,b2:s2", where b0:s0 is low mem,
|
|
||||||
* b1:s1 is mem between 1M and 16M, b2:s2 is mem above 16M. Pairs b1:s1
|
|
||||||
* and b2:s2 are combined if the memory is adjacent.
|
|
||||||
*/
|
|
||||||
s = find_param("memory"); /* get memory boot variable */
|
|
||||||
for (i = 0; i < NR_MEMS && !done; i++) {
|
|
||||||
memp = &mem_chunks[i]; /* next mem chunk is stored here */
|
|
||||||
base = size = 0; /* initialize next base:size pair */
|
|
||||||
if (*s != 0) { /* get fresh data, unless at end */
|
|
||||||
|
|
||||||
/* Read fresh base and expect colon as next char. */
|
|
||||||
base = strtoul(s, &end, 0x10); /* get number */
|
|
||||||
if (end != s && *end == ':') s = ++end; /* skip ':' */
|
|
||||||
else *s=0; /* terminate, should not happen */
|
|
||||||
|
|
||||||
/* Read fresh size and expect comma or assume end. */
|
|
||||||
size = strtoul(s, &end, 0x10); /* get number */
|
|
||||||
if (end != s && *end == ',') s = ++end; /* skip ',' */
|
|
||||||
else done = 1;
|
|
||||||
}
|
|
||||||
limit = base + size;
|
limit = base + size;
|
||||||
#if _WORD_SIZE == 2
|
|
||||||
max_address = machine.protected ? MAX_16BIT : MAX_REAL;
|
|
||||||
if (limit > max_address) limit = max_address;
|
|
||||||
#endif
|
|
||||||
base = (base + CLICK_SIZE-1) & ~(long)(CLICK_SIZE-1);
|
base = (base + CLICK_SIZE-1) & ~(long)(CLICK_SIZE-1);
|
||||||
limit &= ~(long)(CLICK_SIZE-1);
|
limit &= ~(long)(CLICK_SIZE-1);
|
||||||
if (limit <= base) continue;
|
if (limit <= base) {
|
||||||
memp->base = base >> CLICK_SHIFT;
|
memp->base = memp->size = 0;
|
||||||
memp->size = (limit - base) >> CLICK_SHIFT;
|
} else {
|
||||||
|
memp->base = base >> CLICK_SHIFT;
|
||||||
|
memp->size = (limit - base) >> CLICK_SHIFT;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -611,7 +572,7 @@ PRIVATE void send_work()
|
|||||||
|
|
||||||
case PM_FORK:
|
case PM_FORK:
|
||||||
{
|
{
|
||||||
int parent_e, parent_p;
|
int parent_p;
|
||||||
struct mproc *parent_mp;
|
struct mproc *parent_mp;
|
||||||
|
|
||||||
parent_p = rmp->mp_parent;
|
parent_p = rmp->mp_parent;
|
||||||
@ -682,7 +643,7 @@ PRIVATE void send_work()
|
|||||||
|
|
||||||
case PM_FORK_NB:
|
case PM_FORK_NB:
|
||||||
{
|
{
|
||||||
int parent_e, parent_p;
|
int parent_p;
|
||||||
struct mproc *parent_mp;
|
struct mproc *parent_mp;
|
||||||
|
|
||||||
parent_p = rmp->mp_parent;
|
parent_p = rmp->mp_parent;
|
||||||
|
@ -147,8 +147,8 @@ PUBLIC int do_sysuname()
|
|||||||
/* Set or get uname strings. */
|
/* Set or get uname strings. */
|
||||||
|
|
||||||
int r;
|
int r;
|
||||||
size_t n, len;
|
size_t n;
|
||||||
char *string, *t;
|
char *string;
|
||||||
#if 0 /* for updates */
|
#if 0 /* for updates */
|
||||||
char tmp[sizeof(uts_val.nodename)];
|
char tmp[sizeof(uts_val.nodename)];
|
||||||
static short sizes[] = {
|
static short sizes[] = {
|
||||||
@ -287,7 +287,7 @@ PUBLIC int do_getsysinfo_up()
|
|||||||
vir_bytes src_addr, dst_addr;
|
vir_bytes src_addr, dst_addr;
|
||||||
struct loadinfo loadinfo;
|
struct loadinfo loadinfo;
|
||||||
size_t len, real_len;
|
size_t len, real_len;
|
||||||
int s, r;
|
int s;
|
||||||
|
|
||||||
switch(m_in.SIU_WHAT) {
|
switch(m_in.SIU_WHAT) {
|
||||||
case SIU_LOADINFO: /* loadinfo is obtained via PM */
|
case SIU_LOADINFO: /* loadinfo is obtained via PM */
|
||||||
|
@ -34,7 +34,7 @@ PUBLIC int do_sprofile(void)
|
|||||||
switch(m_in.PROF_ACTION) {
|
switch(m_in.PROF_ACTION) {
|
||||||
|
|
||||||
case PROF_START:
|
case PROF_START:
|
||||||
if (r = check_addrs(sizeof(sprof_info_inst))) /* check user pointers */
|
if ((r = check_addrs(sizeof(sprof_info_inst)))) /* check pointers */
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
return sys_sprof(PROF_START, m_in.PROF_MEM_SIZE, m_in.PROF_FREQ,
|
return sys_sprof(PROF_START, m_in.PROF_MEM_SIZE, m_in.PROF_FREQ,
|
||||||
|
@ -359,7 +359,7 @@ int sec; /* how many seconds delay before the signal */
|
|||||||
PRIVATE void cause_sigalrm(tp)
|
PRIVATE void cause_sigalrm(tp)
|
||||||
struct timer *tp;
|
struct timer *tp;
|
||||||
{
|
{
|
||||||
int proc_nr_e, proc_nr_n;
|
int proc_nr_n;
|
||||||
register struct mproc *rmp;
|
register struct mproc *rmp;
|
||||||
|
|
||||||
/* get process from timer */
|
/* get process from timer */
|
||||||
@ -765,7 +765,7 @@ register struct mproc *rmp; /* whose core is to be dumped */
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
printf("PM: FS died\n");
|
printf("PM: FS died\n");
|
||||||
return;
|
return SUSPEND;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Pending reply messages for the dead process cannot be delivered. */
|
/* Pending reply messages for the dead process cannot be delivered. */
|
||||||
|
@ -76,10 +76,6 @@ int num; /* number to go with it */
|
|||||||
* inconsistency is detected, e.g., a programming error or illegal value of a
|
* inconsistency is detected, e.g., a programming error or illegal value of a
|
||||||
* defined constant. The process manager decides to exit.
|
* defined constant. The process manager decides to exit.
|
||||||
*/
|
*/
|
||||||
message m;
|
|
||||||
int s;
|
|
||||||
|
|
||||||
/* Switch to primary console and print panic message. */
|
|
||||||
printf("PM panic (%s): %s", who, mess);
|
printf("PM panic (%s): %s", who, mess);
|
||||||
if (num != NO_NUM) printf(": %d",num);
|
if (num != NO_NUM) printf(": %d",num);
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user