Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
htop
Commits
28712f22
Commit
28712f22
authored
Nov 27, 2014
by
Hisham Muhammad
Browse files
Reading first bits of data!
parent
8a2e235a
Changes
2
Show whitespace changes
Inline
Side-by-side
freebsd/FreeBSDProcessList.c
View file @
28712f22
/*
htop -
Unsupported
ProcessList.c
htop -
FreeBSD
ProcessList.c
(C) 2014 Hisham H. Muhammad
Released under the GNU GPL, see the COPYING file
in the source distribution for its full text.
*/
#include "ProcessList.h"
#include "FreeBSDProcessList.h"
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/sysctl.h>
#include <fcntl.h>
/*{
#include <kvm.h>
typedef struct FreeBSDProcessList_ {
ProcessList super;
kvm_t* kd;
} FreeBSDProcessList;
}*/
static
int
MIB_vm_stats_vm_v_wire_count
[
4
];
static
int
MIB_hw_physmem
[
2
];
ProcessList
*
ProcessList_new
(
UsersTable
*
usersTable
,
Hashtable
*
pidWhiteList
)
{
ProcessList
*
this
=
calloc
(
1
,
sizeof
(
ProcessList
));
ProcessList_init
(
this
,
usersTable
,
pidWhiteList
);
FreeBSDProcessList
*
this
=
calloc
(
1
,
sizeof
(
FreeBSDProcessList
));
ProcessList
*
pl
=
(
ProcessList
*
)
this
;
ProcessList_init
((
ProcessList
*
)
this
,
usersTable
,
pidWhiteList
);
int
cpus
=
1
;
size_t
sizeof_cpus
=
sizeof
(
cpus
);
int
err
=
sysctlbyname
(
"hw.ncpu"
,
&
cpus
,
&
sizeof_cpus
,
NULL
,
0
);
if
(
err
)
cpus
=
1
;
this
->
cpuCount
=
MAX
(
cpus
,
1
);
this
->
cpus
=
realloc
(
this
->
cpus
,
cpus
*
sizeof
(
CPUData
));
pl
->
cpuCount
=
MAX
(
cpus
,
1
);
pl
->
cpus
=
realloc
(
pl
->
cpus
,
cpus
*
sizeof
(
CPUData
));
for
(
int
i
=
0
;
i
<
cpus
;
i
++
)
{
this
->
cpus
[
i
].
totalTime
=
1
;
this
->
cpus
[
i
].
totalPeriod
=
1
;
pl
->
cpus
[
i
].
totalTime
=
1
;
pl
->
cpus
[
i
].
totalPeriod
=
1
;
}
return
this
;
size_t
len
=
4
;
sysctlnametomib
(
"vm.stats.vm.v_wire_count"
,
MIB_vm_stats_vm_v_wire_count
,
&
len
);
len
=
2
;
sysctlnametomib
(
"hw.physmem"
,
MIB_hw_physmem
,
&
len
);
return
(
ProcessList
*
)
this
;
}
static
inline
void
FreeBSDProcessList_scanMemoryInfo
(
ProcessList
*
pl
)
{
const
FreeBSDProcessList
*
fpl
=
(
FreeBSDProcessList
*
)
pl
;
unsigned
long
long
int
swapFree
=
0
;
size_t
len
=
sizeof
(
pl
->
totalMem
);
sysctl
(
MIB_hw_physmem
,
2
,
&
(
pl
->
totalMem
),
&
len
,
NULL
,
0
);
pl
->
totalMem
/=
1024
;
sysctl
(
MIB_vm_stats_vm_v_wire_count
,
4
,
&
(
pl
->
usedMem
),
&
len
,
NULL
,
0
);
pl
->
usedMem
*=
PAGE_SIZE
/
1024
;
pl
->
freeMem
=
pl
->
totalMem
-
pl
->
usedMem
;
pl
->
sharedMem
=
0
;
pl
->
buffersMem
=
0
;
pl
->
cachedMem
=
0
;
pl
->
totalSwap
=
0
;
swapFree
=
0
;
pl
->
usedSwap
=
pl
->
totalSwap
-
swapFree
;
}
void
ProcessList_scan
(
ProcessList
*
this
)
{
(
void
)
this
;
FreeBSDProcessList_scanMemoryInfo
(
this
);
// stub!
}
freebsd/FreeBSDProcessList.h
View file @
28712f22
...
...
@@ -3,13 +3,21 @@
#ifndef HEADER_FreeBSDProcessList
#define HEADER_FreeBSDProcessList
/*
htop -
Unsupported
ProcessList.h
htop -
FreeBSD
ProcessList.h
(C) 2014 Hisham H. Muhammad
Released under the GNU GPL, see the COPYING file
in the source distribution for its full text.
*/
#include <kvm.h>
typedef
struct
FreeBSDProcessList_
{
ProcessList
super
;
kvm_t
*
kd
;
}
FreeBSDProcessList
;
ProcessList
*
ProcessList_new
(
UsersTable
*
usersTable
,
Hashtable
*
pidWhiteList
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment