diff options
author | rgr22@boulderdash.cl.cam.ac.uk <rgr22@boulderdash.cl.cam.ac.uk> | 2003-06-10 10:29:00 +0000 |
---|---|---|
committer | rgr22@boulderdash.cl.cam.ac.uk <rgr22@boulderdash.cl.cam.ac.uk> | 2003-06-10 10:29:00 +0000 |
commit | 06bbc9e0ab74904cb9067e9a3f5232f0edfd5611 (patch) | |
tree | 9e5580eb4764173466570286a6a8122be4438392 /xenolinux-2.4.21-pre4-sparse | |
parent | f8e9aa0b6f30ba9cd26d686c335044620a65e452 (diff) | |
parent | 0da1267457f6ce239b758dd4035ec1aec544df5a (diff) | |
download | xen-06bbc9e0ab74904cb9067e9a3f5232f0edfd5611.tar.gz xen-06bbc9e0ab74904cb9067e9a3f5232f0edfd5611.tar.bz2 xen-06bbc9e0ab74904cb9067e9a3f5232f0edfd5611.zip |
bitkeeper revision 1.254 (3ee5b2ec_UeOrG0N_QNlcT6ZX9JLTg)
Merge boulderdash.cl.cam.ac.uk:/auto/groups/xeno/BK/xeno.bk
into boulderdash.cl.cam.ac.uk:/auto/anfs/scratch/boulderdash/rgr22/xeno-clone/xeno.bk
Diffstat (limited to 'xenolinux-2.4.21-pre4-sparse')
-rw-r--r-- | xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/dom0/dom0_core.c | 43 | ||||
-rw-r--r-- | xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/dom0/dom0_ops.h | 1 |
2 files changed, 44 insertions, 0 deletions
diff --git a/xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/dom0/dom0_core.c b/xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/dom0/dom0_core.c index d4777180e4..3dadd5cebd 100644 --- a/xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/dom0/dom0_core.c +++ b/xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/dom0/dom0_core.c @@ -55,6 +55,7 @@ typedef struct proc_mem_data { #define DOM_DIR "dom" #define DOM_MEM "mem" #define DOM_VIF "vif" +#define DOM_USAGE "usage" #define MAP_DISCONT 1 @@ -112,6 +113,39 @@ struct file_operations dom_vif_ops = { read: dom_vif_read }; +static ssize_t dom_usage_read(struct file * file, char * buff, size_t size, loff_t * off) +{ + char hyp_buf[128]; + dom0_op_t op; + static int finished = 0; + + if ( finished ) + { + finished = 0; + return 0; + } + + op.cmd = DOM0_GETDOMAININFO; + op.u.getdominfo.domain = (unsigned int) + ((struct proc_dir_entry *)file->f_dentry->d_inode->u.generic_ip)->data; + + (void)HYPERVISOR_dom0_op(&op); + + snprintf(hyp_buf, 128, "cpu: %lld\n", op.u.getdominfo.cpu_time); + + if (*off >= (strlen(hyp_buf) + 1)) return 0; + + copy_to_user(buff, hyp_buf, strlen(hyp_buf)); + + finished = 1; + + return strlen(hyp_buf) + 1; +} + +struct file_operations dom_usage_ops = { + read: dom_usage_read +}; + static void create_proc_dom_entries(int dom) { @@ -136,6 +170,15 @@ static void create_proc_dom_entries(int dom) file->proc_fops = &dom_vif_ops; file->data = (void *) dom; } + + file = create_proc_entry(DOM_USAGE, 0600, dir); + if (file != NULL) + { + file->owner = THIS_MODULE; + file->nlink = 1; + file->proc_fops = &dom_usage_ops; + file->data = (void *) dom; + } } static ssize_t dom_mem_write(struct file * file, const char * buff, diff --git a/xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/dom0/dom0_ops.h b/xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/dom0/dom0_ops.h index 1a5b63dad2..8f8949a8cd 100644 --- a/xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/dom0/dom0_ops.h +++ b/xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/dom0/dom0_ops.h @@ -102,6 +102,7 @@ typedef struct dom0_getdominfo_st unsigned long mcu_advance; unsigned long pg_head; unsigned int tot_pages; + long long cpu_time; } dom0_getdominfo_t; |