summaryrefslogtreecommitdiff
path: root/minix/lib/libsys/vm_info.c
blob: 81342487eeaa69894d87da08c64d15bfbf77fca8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58

#include "syslib.h"

#include <string.h>
#include <minix/vm.h>

/*===========================================================================*
 *                                vm_info_stats				     *
 *===========================================================================*/
int vm_info_stats(struct vm_stats_info *vsi)
{
    message m;

    memset(&m, 0, sizeof(m));
    m.m_lsys_vm_info.what = VMIW_STATS;
    m.m_lsys_vm_info.ptr = vsi;

    return _taskcall(VM_PROC_NR, VM_INFO, &m);
}

/*===========================================================================*
 *                                vm_info_usage				     *
 *===========================================================================*/
int vm_info_usage(endpoint_t who, struct vm_usage_info *vui)
{
    message m;

    memset(&m, 0, sizeof(m));
    m.m_lsys_vm_info.what = VMIW_USAGE;
    m.m_lsys_vm_info.ep = who;
    m.m_lsys_vm_info.ptr = vui;

    return _taskcall(VM_PROC_NR, VM_INFO, &m);
}

/*===========================================================================*
 *                                vm_info_region			     *
 *===========================================================================*/
int vm_info_region(endpoint_t who, struct vm_region_info *vri,
	int count, vir_bytes *next)
{
    message m;
    int result;

    memset(&m, 0, sizeof(m));
    m.m_lsys_vm_info.what = VMIW_REGION;
    m.m_lsys_vm_info.ep = who;
    m.m_lsys_vm_info.count = count;
    m.m_lsys_vm_info.ptr = vri;
    m.m_lsys_vm_info.next = *next;

    if ((result = _taskcall(VM_PROC_NR, VM_INFO, &m)) != OK)
        return result;

    *next = m.m_lsys_vm_info.next;
    return m.m_lsys_vm_info.count;
}