Skip to content

Commit eb468ad

Browse files
committed
kernel: support manual additions of kernel types, add pid_t, uid_t, and gid_t
1 parent 559a300 commit eb468ad

File tree

3 files changed

+12
-4
lines changed

3 files changed

+12
-4
lines changed

generate/members.go

-3
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,6 @@ func (db *Generator) shouldSkipType(ti declparse.TypeInfo) bool {
5757
"tls_protocol_version_t",
5858
"IOReturn",
5959
"ByteCount",
60-
"gid_t",
61-
"pid_t",
62-
"uid_t",
6360
"au_asid_t",
6461
"va_list",
6562
"CLBeaconIdentityConstraint",

generate/typing/kernel_type.go

+6-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package typing
22

33
import (
4+
"strings"
45
"unicode"
56

67
"github.com/progrium/macdriver/generate/modules"
@@ -23,6 +24,9 @@ func GetKernelType(typeName string) (Type, bool) {
2324
"matrix_float4x3",
2425
"matrix_double4x4",
2526
"vector_uchar16",
27+
"pid_t",
28+
"gid_t",
29+
"uid_t",
2630
} {
2731
if typeName == name {
2832
return &KernelType{ObjcName_: typeName}, true
@@ -42,7 +46,8 @@ func (k *KernelType) GoImports() set.Set[string] {
4246
func (k *KernelType) GoName(currentModule *modules.Module, receiveFromObjc bool) string {
4347
r := []rune(k.ObjcName_)
4448
r[0] = unicode.ToUpper(r[0])
45-
return FullGoName(*k.DeclareModule(), string(r), *currentModule)
49+
name := strings.TrimSuffix(string(r), "_t")
50+
return FullGoName(*k.DeclareModule(), name, *currentModule)
4651
}
4752

4853
func (k *KernelType) ObjcName() string {

kernel/types.go

+6
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,9 @@ type Matrix_float3x3 unsafe.Pointer
2121
type Matrix_float4x4 unsafe.Pointer
2222
type Matrix_float4x3 unsafe.Pointer
2323
type Matrix_double4x4 unsafe.Pointer
24+
25+
// https://developer.apple.com/documentation/kernel/kernel_data_types?language=objc
26+
// https://github.com/apple/darwin-xnu/blob/main/bsd/sys/_types.h
27+
type Pid = int32
28+
type Gid = uint32
29+
type Uid = uint32

0 commit comments

Comments
 (0)