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
657836a2
Commit
657836a2
authored
Apr 06, 2018
by
Hisham Muhammad
Browse files
Minor style fixes.
parent
63e1417b
Changes
2
Show whitespace changes
Inline
Side-by-side
darwin/DarwinProcessList.c
View file @
657836a2
...
@@ -21,11 +21,30 @@ in the source distribution for its full text.
...
@@ -21,11 +21,30 @@ in the source distribution for its full text.
#include <sys/sysctl.h>
#include <sys/sysctl.h>
#include <stdbool.h>
#include <stdbool.h>
struct
kern
{
/*{
#include "ProcessList.h"
#include <mach/mach_host.h>
#include <sys/sysctl.h>
typedef struct DarwinProcessList_ {
ProcessList super;
host_basic_info_data_t host_info;
vm_statistics_data_t vm_stats;
processor_cpu_load_info_t prev_load;
processor_cpu_load_info_t curr_load;
uint64_t kernel_threads;
uint64_t user_threads;
uint64_t global_diff;
} DarwinProcessList;
}*/
typedef
struct
kern
{
short
int
version
[
3
];
short
int
version
[
3
];
};
}
kern_
;
void
G
etKernelVersion
(
struct
kern
*
k
)
{
static
void
g
etKernelVersion
(
struct
kern
*
k
)
{
static
short
int
version_
[
3
]
=
{
0
};
static
short
int
version_
[
3
]
=
{
0
};
if
(
!
version_
[
0
])
{
if
(
!
version_
[
0
])
{
// just in case it fails someday
// just in case it fails someday
...
@@ -38,50 +57,32 @@ void GetKernelVersion(struct kern *k) {
...
@@ -38,50 +57,32 @@ void GetKernelVersion(struct kern *k) {
memcpy
(
k
->
version
,
version_
,
sizeof
(
version_
));
memcpy
(
k
->
version
,
version_
,
sizeof
(
version_
));
}
}
/* compare the given os version with the one installed returns:
static
int
compareKernelVersion
(
short
int
major
,
short
int
minor
,
short
int
component
)
{
0 if equals the installed version
/*
positive value if less than the installed version
compare the given os version with the one installed returns:
negative value if more than the installed version
0 if equals the installed version
*/
positive value if less than the installed version
int
CompareKernelVersion
(
short
int
major
,
short
int
minor
,
short
int
component
)
{
negative value if more than the installed version
*/
struct
kern
k
;
struct
kern
k
;
G
etKernelVersion
(
&
k
);
g
etKernelVersion
(
&
k
);
if
(
k
.
version
[
0
]
!=
major
)
return
k
.
version
[
0
]
-
major
;
if
(
k
.
version
[
0
]
!=
major
)
return
k
.
version
[
0
]
-
major
;
if
(
k
.
version
[
1
]
!=
minor
)
return
k
.
version
[
1
]
-
minor
;
if
(
k
.
version
[
1
]
!=
minor
)
return
k
.
version
[
1
]
-
minor
;
if
(
k
.
version
[
2
]
!=
component
)
return
k
.
version
[
2
]
-
component
;
if
(
k
.
version
[
2
]
!=
component
)
return
k
.
version
[
2
]
-
component
;
return
0
;
return
0
;
}
}
/*{
#include "ProcessList.h"
#include <mach/mach_host.h>
#include <sys/sysctl.h>
typedef struct DarwinProcessList_ {
ProcessList super;
host_basic_info_data_t host_info;
vm_statistics_data_t vm_stats;
processor_cpu_load_info_t prev_load;
processor_cpu_load_info_t curr_load;
uint64_t kernel_threads;
uint64_t user_threads;
uint64_t global_diff;
} DarwinProcessList;
}*/
void
ProcessList_getHostInfo
(
host_basic_info_data_t
*
p
)
{
void
ProcessList_getHostInfo
(
host_basic_info_data_t
*
p
)
{
mach_msg_type_number_t
info_size
=
HOST_BASIC_INFO_COUNT
;
mach_msg_type_number_t
info_size
=
HOST_BASIC_INFO_COUNT
;
if
(
0
!=
host_info
(
mach_host_self
(),
HOST_BASIC_INFO
,
(
host_info_t
)
p
,
&
info_size
))
{
if
(
0
!=
host_info
(
mach_host_self
(),
HOST_BASIC_INFO
,
(
host_info_t
)
p
,
&
info_size
))
{
CRT_fatalError
(
"Unable to retrieve host info
\n
"
);
CRT_fatalError
(
"Unable to retrieve host info
\n
"
);
}
}
}
}
void
ProcessList_freeCPULoadInfo
(
processor_cpu_load_info_t
*
p
)
{
void
ProcessList_freeCPULoadInfo
(
processor_cpu_load_info_t
*
p
)
{
if
(
NULL
!=
p
&&
NULL
!=
*
p
)
{
if
(
NULL
!=
p
&&
NULL
!=
*
p
)
{
if
(
0
!=
munmap
(
*
p
,
vm_page_size
))
{
if
(
0
!=
munmap
(
*
p
,
vm_page_size
))
{
CRT_fatalError
(
"Unable to free old CPU load information
\n
"
);
CRT_fatalError
(
"Unable to free old CPU load information
\n
"
);
}
}
}
}
...
@@ -94,7 +95,7 @@ unsigned ProcessList_allocateCPULoadInfo(processor_cpu_load_info_t *p) {
...
@@ -94,7 +95,7 @@ unsigned ProcessList_allocateCPULoadInfo(processor_cpu_load_info_t *p) {
unsigned
cpu_count
;
unsigned
cpu_count
;
// TODO Improving the accuracy of the load counts woule help a lot.
// TODO Improving the accuracy of the load counts woule help a lot.
if
(
0
!=
host_processor_info
(
mach_host_self
(),
PROCESSOR_CPU_LOAD_INFO
,
&
cpu_count
,
(
processor_info_array_t
*
)
p
,
&
info_size
))
{
if
(
0
!=
host_processor_info
(
mach_host_self
(),
PROCESSOR_CPU_LOAD_INFO
,
&
cpu_count
,
(
processor_info_array_t
*
)
p
,
&
info_size
))
{
CRT_fatalError
(
"Unable to retrieve CPU info
\n
"
);
CRT_fatalError
(
"Unable to retrieve CPU info
\n
"
);
}
}
...
@@ -205,7 +206,7 @@ void ProcessList_goThroughEntries(ProcessList* super) {
...
@@ -205,7 +206,7 @@ void ProcessList_goThroughEntries(ProcessList* super) {
DarwinProcess_setFromLibprocPidinfo
(
proc
,
dpl
);
DarwinProcess_setFromLibprocPidinfo
(
proc
,
dpl
);
// Disabled for High Sierra due to bug in macOS High Sierra
// Disabled for High Sierra due to bug in macOS High Sierra
bool
isScanThreadSupported
=
!
(
C
ompareKernelVersion
(
17
,
0
,
0
)
>=
0
&&
C
ompareKernelVersion
(
17
,
5
,
0
)
<
0
);
bool
isScanThreadSupported
=
!
(
c
ompareKernelVersion
(
17
,
0
,
0
)
>=
0
&&
c
ompareKernelVersion
(
17
,
5
,
0
)
<
0
);
if
(
isScanThreadSupported
){
if
(
isScanThreadSupported
){
DarwinProcess_scanThreads
(
proc
);
DarwinProcess_scanThreads
(
proc
);
...
@@ -213,7 +214,7 @@ void ProcessList_goThroughEntries(ProcessList* super) {
...
@@ -213,7 +214,7 @@ void ProcessList_goThroughEntries(ProcessList* super) {
super
->
totalTasks
+=
1
;
super
->
totalTasks
+=
1
;
if
(
!
preExisting
)
{
if
(
!
preExisting
)
{
proc
->
super
.
user
=
UsersTable_getRef
(
super
->
usersTable
,
proc
->
super
.
st_uid
);
proc
->
super
.
user
=
UsersTable_getRef
(
super
->
usersTable
,
proc
->
super
.
st_uid
);
ProcessList_add
(
super
,
&
proc
->
super
);
ProcessList_add
(
super
,
&
proc
->
super
);
...
...
darwin/DarwinProcessList.h
View file @
657836a2
...
@@ -26,6 +26,7 @@ typedef struct DarwinProcessList_ {
...
@@ -26,6 +26,7 @@ typedef struct DarwinProcessList_ {
}
DarwinProcessList
;
}
DarwinProcessList
;
void
ProcessList_getHostInfo
(
host_basic_info_data_t
*
p
);
void
ProcessList_getHostInfo
(
host_basic_info_data_t
*
p
);
void
ProcessList_freeCPULoadInfo
(
processor_cpu_load_info_t
*
p
);
void
ProcessList_freeCPULoadInfo
(
processor_cpu_load_info_t
*
p
);
...
...
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