mirror of https://github.com/shirou/gopsutil
Merge branch 'master' into use-x-sys-windows
commit
61b5bf8cef
@ -0,0 +1,9 @@
|
|||||||
|
package cpu
|
||||||
|
|
||||||
|
type cpuTimes struct {
|
||||||
|
User uint64
|
||||||
|
Nice uint64
|
||||||
|
Sys uint64
|
||||||
|
Intr uint64
|
||||||
|
Idle uint64
|
||||||
|
}
|
@ -0,0 +1,115 @@
|
|||||||
|
// +build freebsd
|
||||||
|
// +build arm64
|
||||||
|
// Code generated by cmd/cgo -godefs; DO NOT EDIT.
|
||||||
|
// cgo -godefs disk/types_freebsd.go
|
||||||
|
|
||||||
|
package disk
|
||||||
|
|
||||||
|
const (
|
||||||
|
sizeofPtr = 0x8
|
||||||
|
sizeofShort = 0x2
|
||||||
|
sizeofInt = 0x4
|
||||||
|
sizeofLong = 0x8
|
||||||
|
sizeofLongLong = 0x8
|
||||||
|
sizeofLongDouble = 0x8
|
||||||
|
|
||||||
|
DEVSTAT_NO_DATA = 0x00
|
||||||
|
DEVSTAT_READ = 0x01
|
||||||
|
DEVSTAT_WRITE = 0x02
|
||||||
|
DEVSTAT_FREE = 0x03
|
||||||
|
|
||||||
|
MNT_RDONLY = 0x00000001
|
||||||
|
MNT_SYNCHRONOUS = 0x00000002
|
||||||
|
MNT_NOEXEC = 0x00000004
|
||||||
|
MNT_NOSUID = 0x00000008
|
||||||
|
MNT_UNION = 0x00000020
|
||||||
|
MNT_ASYNC = 0x00000040
|
||||||
|
MNT_SUIDDIR = 0x00100000
|
||||||
|
MNT_SOFTDEP = 0x00200000
|
||||||
|
MNT_NOSYMFOLLOW = 0x00400000
|
||||||
|
MNT_GJOURNAL = 0x02000000
|
||||||
|
MNT_MULTILABEL = 0x04000000
|
||||||
|
MNT_ACLS = 0x08000000
|
||||||
|
MNT_NOATIME = 0x10000000
|
||||||
|
MNT_NOCLUSTERR = 0x40000000
|
||||||
|
MNT_NOCLUSTERW = 0x80000000
|
||||||
|
MNT_NFS4ACLS = 0x00000010
|
||||||
|
|
||||||
|
MNT_WAIT = 1
|
||||||
|
MNT_NOWAIT = 2
|
||||||
|
MNT_LAZY = 3
|
||||||
|
MNT_SUSPEND = 4
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
sizeOfDevstat = 0x120
|
||||||
|
)
|
||||||
|
|
||||||
|
type (
|
||||||
|
_C_short int16
|
||||||
|
_C_int int32
|
||||||
|
_C_long int64
|
||||||
|
_C_long_long int64
|
||||||
|
_C_long_double int64
|
||||||
|
)
|
||||||
|
|
||||||
|
type Statfs struct {
|
||||||
|
Version uint32
|
||||||
|
Type uint32
|
||||||
|
Flags uint64
|
||||||
|
Bsize uint64
|
||||||
|
Iosize uint64
|
||||||
|
Blocks uint64
|
||||||
|
Bfree uint64
|
||||||
|
Bavail int64
|
||||||
|
Files uint64
|
||||||
|
Ffree int64
|
||||||
|
Syncwrites uint64
|
||||||
|
Asyncwrites uint64
|
||||||
|
Syncreads uint64
|
||||||
|
Asyncreads uint64
|
||||||
|
Spare [10]uint64
|
||||||
|
Namemax uint32
|
||||||
|
Owner uint32
|
||||||
|
Fsid Fsid
|
||||||
|
Charspare [80]uint8
|
||||||
|
Fstypename [16]int8
|
||||||
|
Mntfromname [1024]int8
|
||||||
|
Mntonname [1024]int8
|
||||||
|
}
|
||||||
|
type Fsid struct {
|
||||||
|
Val [2]int32
|
||||||
|
}
|
||||||
|
|
||||||
|
type Devstat struct {
|
||||||
|
Sequence0 uint32
|
||||||
|
Allocated int32
|
||||||
|
Start_count uint32
|
||||||
|
End_count uint32
|
||||||
|
Busy_from Bintime
|
||||||
|
Dev_links _Ctype_struct___0
|
||||||
|
Device_number uint32
|
||||||
|
Device_name [16]int8
|
||||||
|
Unit_number int32
|
||||||
|
Bytes [4]uint64
|
||||||
|
Operations [4]uint64
|
||||||
|
Duration [4]Bintime
|
||||||
|
Busy_time Bintime
|
||||||
|
Creation_time Bintime
|
||||||
|
Block_size uint32
|
||||||
|
Tag_types [3]uint64
|
||||||
|
Flags uint32
|
||||||
|
Device_type uint32
|
||||||
|
Priority uint32
|
||||||
|
Id *byte
|
||||||
|
Sequence1 uint32
|
||||||
|
Pad_cgo_0 [4]byte
|
||||||
|
}
|
||||||
|
type Bintime struct {
|
||||||
|
Sec int64
|
||||||
|
Frac uint64
|
||||||
|
}
|
||||||
|
|
||||||
|
type _Ctype_struct___0 struct {
|
||||||
|
Empty uint64
|
||||||
|
}
|
@ -0,0 +1,53 @@
|
|||||||
|
// +build darwin
|
||||||
|
// +build cgo
|
||||||
|
|
||||||
|
package host
|
||||||
|
|
||||||
|
// #cgo LDFLAGS: -framework IOKit
|
||||||
|
// #include <stdio.h>
|
||||||
|
// #include <string.h>
|
||||||
|
// #include "include/smc.c"
|
||||||
|
import "C"
|
||||||
|
import "context"
|
||||||
|
|
||||||
|
func SensorsTemperatures() ([]TemperatureStat, error) {
|
||||||
|
return SensorsTemperaturesWithContext(context.Background())
|
||||||
|
}
|
||||||
|
|
||||||
|
func SensorsTemperaturesWithContext(ctx context.Context) ([]TemperatureStat, error) {
|
||||||
|
temperatureKeys := []string{
|
||||||
|
C.AMBIENT_AIR_0,
|
||||||
|
C.AMBIENT_AIR_1,
|
||||||
|
C.CPU_0_DIODE,
|
||||||
|
C.CPU_0_HEATSINK,
|
||||||
|
C.CPU_0_PROXIMITY,
|
||||||
|
C.ENCLOSURE_BASE_0,
|
||||||
|
C.ENCLOSURE_BASE_1,
|
||||||
|
C.ENCLOSURE_BASE_2,
|
||||||
|
C.ENCLOSURE_BASE_3,
|
||||||
|
C.GPU_0_DIODE,
|
||||||
|
C.GPU_0_HEATSINK,
|
||||||
|
C.GPU_0_PROXIMITY,
|
||||||
|
C.HARD_DRIVE_BAY,
|
||||||
|
C.MEMORY_SLOT_0,
|
||||||
|
C.MEMORY_SLOTS_PROXIMITY,
|
||||||
|
C.NORTHBRIDGE,
|
||||||
|
C.NORTHBRIDGE_DIODE,
|
||||||
|
C.NORTHBRIDGE_PROXIMITY,
|
||||||
|
C.THUNDERBOLT_0,
|
||||||
|
C.THUNDERBOLT_1,
|
||||||
|
C.WIRELESS_MODULE,
|
||||||
|
}
|
||||||
|
var temperatures []TemperatureStat
|
||||||
|
|
||||||
|
C.open_smc()
|
||||||
|
defer C.close_smc()
|
||||||
|
|
||||||
|
for _, key := range temperatureKeys {
|
||||||
|
temperatures = append(temperatures, TemperatureStat{
|
||||||
|
SensorKey: key,
|
||||||
|
Temperature: float64(C.get_temperature(C.CString(key))),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return temperatures, nil
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
// +build darwin
|
||||||
|
// +build !cgo
|
||||||
|
|
||||||
|
package host
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"github.com/shirou/gopsutil/internal/common"
|
||||||
|
)
|
||||||
|
|
||||||
|
func SensorsTemperatures() ([]TemperatureStat, error) {
|
||||||
|
return SensorsTemperaturesWithContext(context.Background())
|
||||||
|
}
|
||||||
|
|
||||||
|
func SensorsTemperaturesWithContext(ctx context.Context) ([]TemperatureStat, error) {
|
||||||
|
return []TemperatureStat{}, common.ErrNotImplementedError
|
||||||
|
}
|
@ -0,0 +1,39 @@
|
|||||||
|
// +build freebsd
|
||||||
|
// +build arm64
|
||||||
|
// Code generated by cmd/cgo -godefs; DO NOT EDIT.
|
||||||
|
// cgo -godefs host/types_freebsd.go
|
||||||
|
|
||||||
|
package host
|
||||||
|
|
||||||
|
const (
|
||||||
|
sizeofPtr = 0x8
|
||||||
|
sizeofShort = 0x2
|
||||||
|
sizeofInt = 0x4
|
||||||
|
sizeofLong = 0x8
|
||||||
|
sizeofLongLong = 0x8
|
||||||
|
sizeOfUtmpx = 0xc5
|
||||||
|
)
|
||||||
|
|
||||||
|
type (
|
||||||
|
_C_short int16
|
||||||
|
_C_int int32
|
||||||
|
_C_long int64
|
||||||
|
_C_long_long int64
|
||||||
|
)
|
||||||
|
|
||||||
|
type Utmp struct {
|
||||||
|
Line [8]int8
|
||||||
|
Name [16]int8
|
||||||
|
Host [16]int8
|
||||||
|
Time int32
|
||||||
|
}
|
||||||
|
|
||||||
|
type Utmpx struct {
|
||||||
|
Type uint8
|
||||||
|
Tv uint64
|
||||||
|
Id [8]int8
|
||||||
|
Pid uint32
|
||||||
|
User [32]int8
|
||||||
|
Line [16]int8
|
||||||
|
Host [128]int8
|
||||||
|
}
|
@ -0,0 +1,168 @@
|
|||||||
|
#include "smc.h"
|
||||||
|
|
||||||
|
#define IOSERVICE_SMC "AppleSMC"
|
||||||
|
#define IOSERVICE_MODEL "IOPlatformExpertDevice"
|
||||||
|
|
||||||
|
#define DATA_TYPE_SP78 "sp78"
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
kSMCUserClientOpen = 0,
|
||||||
|
kSMCUserClientClose = 1,
|
||||||
|
kSMCHandleYPCEvent = 2,
|
||||||
|
kSMCReadKey = 5,
|
||||||
|
kSMCWriteKey = 6,
|
||||||
|
kSMCGetKeyCount = 7,
|
||||||
|
kSMCGetKeyFromIndex = 8,
|
||||||
|
kSMCGetKeyInfo = 9,
|
||||||
|
} selector_t;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
unsigned char major;
|
||||||
|
unsigned char minor;
|
||||||
|
unsigned char build;
|
||||||
|
unsigned char reserved;
|
||||||
|
unsigned short release;
|
||||||
|
} SMCVersion;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
uint16_t version;
|
||||||
|
uint16_t length;
|
||||||
|
uint32_t cpuPLimit;
|
||||||
|
uint32_t gpuPLimit;
|
||||||
|
uint32_t memPLimit;
|
||||||
|
} SMCPLimitData;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
IOByteCount data_size;
|
||||||
|
uint32_t data_type;
|
||||||
|
uint8_t data_attributes;
|
||||||
|
} SMCKeyInfoData;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
uint32_t key;
|
||||||
|
SMCVersion vers;
|
||||||
|
SMCPLimitData p_limit_data;
|
||||||
|
SMCKeyInfoData key_info;
|
||||||
|
uint8_t result;
|
||||||
|
uint8_t status;
|
||||||
|
uint8_t data8;
|
||||||
|
uint32_t data32;
|
||||||
|
uint8_t bytes[32];
|
||||||
|
} SMCParamStruct;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
kSMCSuccess = 0,
|
||||||
|
kSMCError = 1,
|
||||||
|
kSMCKeyNotFound = 0x84,
|
||||||
|
} kSMC_t;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
uint8_t data[32];
|
||||||
|
uint32_t data_type;
|
||||||
|
uint32_t data_size;
|
||||||
|
kSMC_t kSMC;
|
||||||
|
} smc_return_t;
|
||||||
|
|
||||||
|
static const int SMC_KEY_SIZE = 4; // number of characters in an SMC key.
|
||||||
|
static io_connect_t conn; // our connection to the SMC.
|
||||||
|
|
||||||
|
kern_return_t open_smc(void) {
|
||||||
|
kern_return_t result;
|
||||||
|
io_service_t service;
|
||||||
|
|
||||||
|
service = IOServiceGetMatchingService(kIOMasterPortDefault,
|
||||||
|
IOServiceMatching(IOSERVICE_SMC));
|
||||||
|
if (service == 0) {
|
||||||
|
// Note: IOServiceMatching documents 0 on failure
|
||||||
|
printf("ERROR: %s NOT FOUND\n", IOSERVICE_SMC);
|
||||||
|
return kIOReturnError;
|
||||||
|
}
|
||||||
|
|
||||||
|
result = IOServiceOpen(service, mach_task_self(), 0, &conn);
|
||||||
|
IOObjectRelease(service);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
kern_return_t close_smc(void) { return IOServiceClose(conn); }
|
||||||
|
|
||||||
|
static uint32_t to_uint32(char *key) {
|
||||||
|
uint32_t ans = 0;
|
||||||
|
uint32_t shift = 24;
|
||||||
|
|
||||||
|
if (strlen(key) != SMC_KEY_SIZE) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < SMC_KEY_SIZE; i++) {
|
||||||
|
ans += key[i] << shift;
|
||||||
|
shift -= 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ans;
|
||||||
|
}
|
||||||
|
|
||||||
|
static kern_return_t call_smc(SMCParamStruct *input, SMCParamStruct *output) {
|
||||||
|
kern_return_t result;
|
||||||
|
size_t input_cnt = sizeof(SMCParamStruct);
|
||||||
|
size_t output_cnt = sizeof(SMCParamStruct);
|
||||||
|
|
||||||
|
result = IOConnectCallStructMethod(conn, kSMCHandleYPCEvent, input, input_cnt,
|
||||||
|
output, &output_cnt);
|
||||||
|
|
||||||
|
if (result != kIOReturnSuccess) {
|
||||||
|
result = err_get_code(result);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
static kern_return_t read_smc(char *key, smc_return_t *result_smc) {
|
||||||
|
kern_return_t result;
|
||||||
|
SMCParamStruct input;
|
||||||
|
SMCParamStruct output;
|
||||||
|
|
||||||
|
memset(&input, 0, sizeof(SMCParamStruct));
|
||||||
|
memset(&output, 0, sizeof(SMCParamStruct));
|
||||||
|
memset(result_smc, 0, sizeof(smc_return_t));
|
||||||
|
|
||||||
|
input.key = to_uint32(key);
|
||||||
|
input.data8 = kSMCGetKeyInfo;
|
||||||
|
|
||||||
|
result = call_smc(&input, &output);
|
||||||
|
result_smc->kSMC = output.result;
|
||||||
|
|
||||||
|
if (result != kIOReturnSuccess || output.result != kSMCSuccess) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
result_smc->data_size = output.key_info.data_size;
|
||||||
|
result_smc->data_type = output.key_info.data_type;
|
||||||
|
|
||||||
|
input.key_info.data_size = output.key_info.data_size;
|
||||||
|
input.data8 = kSMCReadKey;
|
||||||
|
|
||||||
|
result = call_smc(&input, &output);
|
||||||
|
result_smc->kSMC = output.result;
|
||||||
|
|
||||||
|
if (result != kIOReturnSuccess || output.result != kSMCSuccess) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
memcpy(result_smc->data, output.bytes, sizeof(output.bytes));
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
double get_temperature(char *key) {
|
||||||
|
kern_return_t result;
|
||||||
|
smc_return_t result_smc;
|
||||||
|
|
||||||
|
result = read_smc(key, &result_smc);
|
||||||
|
|
||||||
|
if (!(result == kIOReturnSuccess) && result_smc.data_size == 2 &&
|
||||||
|
result_smc.data_type == to_uint32(DATA_TYPE_SP78)) {
|
||||||
|
return 0.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (double)result_smc.data[0];
|
||||||
|
}
|
@ -0,0 +1,32 @@
|
|||||||
|
#ifndef __SMC_H__
|
||||||
|
#define __SMC_H__ 1
|
||||||
|
|
||||||
|
#include <IOKit/IOKitLib.h>
|
||||||
|
|
||||||
|
#define AMBIENT_AIR_0 "TA0P"
|
||||||
|
#define AMBIENT_AIR_1 "TA1P"
|
||||||
|
#define CPU_0_DIODE "TC0D"
|
||||||
|
#define CPU_0_HEATSINK "TC0H"
|
||||||
|
#define CPU_0_PROXIMITY "TC0P"
|
||||||
|
#define ENCLOSURE_BASE_0 "TB0T"
|
||||||
|
#define ENCLOSURE_BASE_1 "TB1T"
|
||||||
|
#define ENCLOSURE_BASE_2 "TB2T"
|
||||||
|
#define ENCLOSURE_BASE_3 "TB3T"
|
||||||
|
#define GPU_0_DIODE "TG0D"
|
||||||
|
#define GPU_0_HEATSINK "TG0H"
|
||||||
|
#define GPU_0_PROXIMITY "TG0P"
|
||||||
|
#define HARD_DRIVE_BAY "TH0P"
|
||||||
|
#define MEMORY_SLOT_0 "TM0S"
|
||||||
|
#define MEMORY_SLOTS_PROXIMITY "TM0P"
|
||||||
|
#define NORTHBRIDGE "TN0H"
|
||||||
|
#define NORTHBRIDGE_DIODE "TN0D"
|
||||||
|
#define NORTHBRIDGE_PROXIMITY "TN0P"
|
||||||
|
#define THUNDERBOLT_0 "TI0P"
|
||||||
|
#define THUNDERBOLT_1 "TI1P"
|
||||||
|
#define WIRELESS_MODULE "TW0P"
|
||||||
|
|
||||||
|
kern_return_t open_smc(void);
|
||||||
|
kern_return_t close_smc(void);
|
||||||
|
double get_temperature(char *);
|
||||||
|
|
||||||
|
#endif // __SMC_H__
|
@ -0,0 +1,201 @@
|
|||||||
|
// +build freebsd
|
||||||
|
// +build arm64
|
||||||
|
// Code generated by cmd/cgo -godefs; DO NOT EDIT.
|
||||||
|
// cgo -godefs process/types_freebsd.go
|
||||||
|
|
||||||
|
package process
|
||||||
|
|
||||||
|
const (
|
||||||
|
CTLKern = 1
|
||||||
|
KernProc = 14
|
||||||
|
KernProcPID = 1
|
||||||
|
KernProcProc = 8
|
||||||
|
KernProcPathname = 12
|
||||||
|
KernProcArgs = 7
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
sizeofPtr = 0x8
|
||||||
|
sizeofShort = 0x2
|
||||||
|
sizeofInt = 0x4
|
||||||
|
sizeofLong = 0x8
|
||||||
|
sizeofLongLong = 0x8
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
sizeOfKinfoVmentry = 0x488
|
||||||
|
sizeOfKinfoProc = 0x440
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
SIDL = 1
|
||||||
|
SRUN = 2
|
||||||
|
SSLEEP = 3
|
||||||
|
SSTOP = 4
|
||||||
|
SZOMB = 5
|
||||||
|
SWAIT = 6
|
||||||
|
SLOCK = 7
|
||||||
|
)
|
||||||
|
|
||||||
|
type (
|
||||||
|
_C_short int16
|
||||||
|
_C_int int32
|
||||||
|
_C_long int64
|
||||||
|
_C_long_long int64
|
||||||
|
)
|
||||||
|
|
||||||
|
type Timespec struct {
|
||||||
|
Sec int64
|
||||||
|
Nsec int64
|
||||||
|
}
|
||||||
|
|
||||||
|
type Timeval struct {
|
||||||
|
Sec int64
|
||||||
|
Usec int64
|
||||||
|
}
|
||||||
|
|
||||||
|
type Rusage struct {
|
||||||
|
Utime Timeval
|
||||||
|
Stime Timeval
|
||||||
|
Maxrss int64
|
||||||
|
Ixrss int64
|
||||||
|
Idrss int64
|
||||||
|
Isrss int64
|
||||||
|
Minflt int64
|
||||||
|
Majflt int64
|
||||||
|
Nswap int64
|
||||||
|
Inblock int64
|
||||||
|
Oublock int64
|
||||||
|
Msgsnd int64
|
||||||
|
Msgrcv int64
|
||||||
|
Nsignals int64
|
||||||
|
Nvcsw int64
|
||||||
|
Nivcsw int64
|
||||||
|
}
|
||||||
|
|
||||||
|
type Rlimit struct {
|
||||||
|
Cur int64
|
||||||
|
Max int64
|
||||||
|
}
|
||||||
|
|
||||||
|
type KinfoProc struct {
|
||||||
|
Structsize int32
|
||||||
|
Layout int32
|
||||||
|
Args *int64 /* pargs */
|
||||||
|
Paddr *int64 /* proc */
|
||||||
|
Addr *int64 /* user */
|
||||||
|
Tracep *int64 /* vnode */
|
||||||
|
Textvp *int64 /* vnode */
|
||||||
|
Fd *int64 /* filedesc */
|
||||||
|
Vmspace *int64 /* vmspace */
|
||||||
|
Wchan *byte
|
||||||
|
Pid int32
|
||||||
|
Ppid int32
|
||||||
|
Pgid int32
|
||||||
|
Tpgid int32
|
||||||
|
Sid int32
|
||||||
|
Tsid int32
|
||||||
|
Jobc int16
|
||||||
|
Spare_short1 int16
|
||||||
|
Tdev_freebsd11 uint32
|
||||||
|
Siglist [16]byte /* sigset */
|
||||||
|
Sigmask [16]byte /* sigset */
|
||||||
|
Sigignore [16]byte /* sigset */
|
||||||
|
Sigcatch [16]byte /* sigset */
|
||||||
|
Uid uint32
|
||||||
|
Ruid uint32
|
||||||
|
Svuid uint32
|
||||||
|
Rgid uint32
|
||||||
|
Svgid uint32
|
||||||
|
Ngroups int16
|
||||||
|
Spare_short2 int16
|
||||||
|
Groups [16]uint32
|
||||||
|
Size uint64
|
||||||
|
Rssize int64
|
||||||
|
Swrss int64
|
||||||
|
Tsize int64
|
||||||
|
Dsize int64
|
||||||
|
Ssize int64
|
||||||
|
Xstat uint16
|
||||||
|
Acflag uint16
|
||||||
|
Pctcpu uint32
|
||||||
|
Estcpu uint32
|
||||||
|
Slptime uint32
|
||||||
|
Swtime uint32
|
||||||
|
Cow uint32
|
||||||
|
Runtime uint64
|
||||||
|
Start Timeval
|
||||||
|
Childtime Timeval
|
||||||
|
Flag int64
|
||||||
|
Kiflag int64
|
||||||
|
Traceflag int32
|
||||||
|
Stat uint8
|
||||||
|
Nice int8
|
||||||
|
Lock uint8
|
||||||
|
Rqindex uint8
|
||||||
|
Oncpu_old uint8
|
||||||
|
Lastcpu_old uint8
|
||||||
|
Tdname [17]uint8
|
||||||
|
Wmesg [9]uint8
|
||||||
|
Login [18]uint8
|
||||||
|
Lockname [9]uint8
|
||||||
|
Comm [20]int8
|
||||||
|
Emul [17]uint8
|
||||||
|
Loginclass [18]uint8
|
||||||
|
Moretdname [4]uint8
|
||||||
|
Sparestrings [46]uint8
|
||||||
|
Spareints [2]int32
|
||||||
|
Tdev uint64
|
||||||
|
Oncpu int32
|
||||||
|
Lastcpu int32
|
||||||
|
Tracer int32
|
||||||
|
Flag2 int32
|
||||||
|
Fibnum int32
|
||||||
|
Cr_flags uint32
|
||||||
|
Jid int32
|
||||||
|
Numthreads int32
|
||||||
|
Tid int32
|
||||||
|
Pri Priority
|
||||||
|
Rusage Rusage
|
||||||
|
Rusage_ch Rusage
|
||||||
|
Pcb *int64 /* pcb */
|
||||||
|
Kstack *byte
|
||||||
|
Udata *byte
|
||||||
|
Tdaddr *int64 /* thread */
|
||||||
|
Spareptrs [6]*byte
|
||||||
|
Sparelongs [12]int64
|
||||||
|
Sflag int64
|
||||||
|
Tdflags int64
|
||||||
|
}
|
||||||
|
|
||||||
|
type Priority struct {
|
||||||
|
Class uint8
|
||||||
|
Level uint8
|
||||||
|
Native uint8
|
||||||
|
User uint8
|
||||||
|
}
|
||||||
|
|
||||||
|
type KinfoVmentry struct {
|
||||||
|
Structsize int32
|
||||||
|
Type int32
|
||||||
|
Start uint64
|
||||||
|
End uint64
|
||||||
|
Offset uint64
|
||||||
|
Vn_fileid uint64
|
||||||
|
Vn_fsid_freebsd11 uint32
|
||||||
|
Flags int32
|
||||||
|
Resident int32
|
||||||
|
Private_resident int32
|
||||||
|
Protection int32
|
||||||
|
Ref_count int32
|
||||||
|
Shadow_count int32
|
||||||
|
Vn_type int32
|
||||||
|
Vn_size uint64
|
||||||
|
Vn_rdev_freebsd11 uint32
|
||||||
|
Vn_mode uint16
|
||||||
|
Status uint16
|
||||||
|
Vn_fsid uint64
|
||||||
|
Vn_rdev uint64
|
||||||
|
X_kve_ispare [8]int32
|
||||||
|
Path [1024]uint8
|
||||||
|
}
|
Loading…
Reference in New Issue