Implement getrusage

Implement getrusage.
These fields of struct rusage are not supported and always set to zero at this time
long ru_nswap;           /* swaps */
long ru_inblock;         /* block input operations */
long ru_oublock;         /* block output operations */
long ru_msgsnd;          /* messages sent */
long ru_msgrcv;          /* messages received */
long ru_nvcsw;           /* voluntary context switches */
long ru_nivcsw;          /* involuntary context switches */

test75.c is the unit test for this new function

Change-Id: I3f1eb69de1fce90d087d76773b09021fc6106539
This commit is contained in:
Xiaoguang Sun
2013-06-25 20:41:01 +08:00
committed by Gerrit Code Review
parent 4241cc5d98
commit 64f10ee644
41 changed files with 403 additions and 29 deletions

View File

@@ -228,6 +228,11 @@ int libexec_load_elf(struct exec_info *execi)
if(first || startv > vaddr) startv = vaddr;
first = 0;
if ((ph->p_flags & PF_X) != 0 && execi->text_size < seg_membytes)
execi->text_size = seg_membytes;
else
execi->data_size = seg_membytes;
if(try_mmap && execi->memmap(execi, vaddr, fbytes, foffset, clearend, mmap_prot) == OK) {
#if ELF_DEBUG
printf("libexec: mmap 0x%lx-0x%lx done, clearend 0x%x\n",

View File

@@ -32,6 +32,8 @@ struct exec_info {
int allow_setuid; /* Allow set{u,g}id execution? */
vir_bytes stack_size; /* Desired stack size */
vir_bytes load_offset; /* Desired load offset */
vir_bytes text_size; /* Text segment size */
vir_bytes data_size; /* Data segment size */
off_t filesize; /* How big is the file */
/* Callback pointers for use by libexec */