31 lines
984 B
Plaintext
31 lines
984 B
Plaintext
/*
|
|
* Compile and run this as a C program to get the kinfo_proc offsets
|
|
* for your architecture.
|
|
* While FreeBSD works hard at binary-compatibility within an ABI, various
|
|
* we can't say for sure that these are right for _all_ use on a hardware
|
|
* platform. The LP64 ifdef affects the offsets considerably.
|
|
*
|
|
* We use these offsets in hardware-specific files for FreeBSD, to avoid a cgo
|
|
* compilation-time dependency, allowing us to cross-compile for FreeBSD from
|
|
* other hardware platforms, letting us distribute binaries for FreeBSD.
|
|
*/
|
|
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
#include <stdio.h>
|
|
#include <sys/types.h>
|
|
#include <sys/user.h>
|
|
|
|
#define SHOW_OFFSET(FIELD) printf(" KIP_OFF_%s = %zu\n", #FIELD, offsetof(struct kinfo_proc, ki_ ## FIELD))
|
|
|
|
int main(int argc, char *argv[]) {
|
|
/* Uncomment these if you want some extra debugging aids:
|
|
SHOW_OFFSET(pid);
|
|
SHOW_OFFSET(ppid);
|
|
SHOW_OFFSET(uid);
|
|
*/
|
|
SHOW_OFFSET(size);
|
|
SHOW_OFFSET(rssize);
|
|
SHOW_OFFSET(pctcpu);
|
|
}
|