@samitouri / QOSamiQemu / commits / d3b40f501a

bsd-user: Add FreeBSD ioctl type definitions

Add os-ioctl-types.h with STRUCT macro definitions for ioctl type registration. This header uses multiple inclusion with different STRUCT macro definitions to generate both enums and type definitions. Signed-off-by: Stacey Son <sson@FreeBSD.org> Reviewed-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> Signed-off-by: Warner Losh <imp@bsdimp.com>

Stacey Son committed Mar 13, 2026 at 22:12 UTC d3b40f501a1d0ce81fde1bd94a0e65b600fa5a42
1 file changed +109
bsd-user/freebsd/os-ioctl-types.h new
+109
@@ -0,0 +1,109 @@
1 +/*
2 + * FreeBSD file related system call shims and definitions
3 + *
4 + * Copyright (c) 2013-2015 Stacey D. Son
5 + *
6 + * SPDX-License-Identifier: GPL-2.0-or-later
7 + */
8 +
9 +STRUCT_SPECIAL(termios)
10 +
11 +STRUCT(winsize,
12 + TYPE_SHORT, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT)
13 +
14 +STRUCT(fiodgname_arg,
15 + TYPE_INT, TYPE_PTRVOID)
16 +
17 +STRUCT(ifconf,
18 + TYPE_INT, TYPE_PTRVOID)
19 +
20 +STRUCT(sockaddr,
21 + TYPE_SHORT, MK_ARRAY(TYPE_CHAR, 14))
22 +
23 +STRUCT(_ifreq_buffer,
24 + TYPE_PTRVOID, TYPE_PTRVOID)
25 +
26 +STRUCT(ifreq_char,
27 + MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ), TYPE_CHAR)
28 +
29 +STRUCT(ifreq_short,
30 + MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ), MK_ARRAY(TYPE_SHORT, 2))
31 +
32 +STRUCT(ifreq_int,
33 + MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ), TYPE_INT)
34 +
35 +STRUCT(ifreq_ptr,
36 + MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ), TYPE_PTRVOID)
37 +
38 +STRUCT(ifreq_cap,
39 + MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ), MK_ARRAY(TYPE_INT, 2))
40 +
41 +STRUCT(ifreq_sockaddr,
42 + MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ), MK_STRUCT(STRUCT_sockaddr))
43 +
44 +STRUCT(ifreq_buf,
45 + MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ), MK_STRUCT(STRUCT__ifreq_buffer))
46 +
47 +STRUCT(ifdrv,
48 + MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ), TYPE_PTRVOID, TYPE_PTRVOID,
49 + TYPE_PTRVOID)
50 +
51 +STRUCT(ifgroupreq_ptr,
52 + MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ), TYPE_INT, TYPE_PTRVOID)
53 +
54 +STRUCT(ifmediareq,
55 + MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ), TYPE_INT, TYPE_INT, TYPE_INT,
56 + TYPE_INT, TYPE_INT, TYPE_PTRVOID)
57 +
58 +STRUCT(ifstat,
59 + MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ),
60 + MK_ARRAY(TYPE_CHAR, TARGET_IFSTATMAX + 1))
61 +
62 +STRUCT(ieee80211req,
63 + MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ), TYPE_SHORT, TYPE_SHORT, TYPE_SHORT,
64 + TYPE_PTRVOID)
65 +
66 +STRUCT(lagg_reqport_lacp_opreq,
67 + MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ), MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ),
68 + TYPE_INT, TYPE_INT,
69 + /* struct lacp_opreq */
70 + TYPE_SHORT, MK_ARRAY(TYPE_CHAR, ETHER_ADDR_LEN), TYPE_SHORT, TYPE_SHORT,
71 + TYPE_SHORT, TYPE_CHAR, TYPE_SHORT, MK_ARRAY(TYPE_CHAR, ETHER_ADDR_LEN),
72 + TYPE_SHORT, TYPE_SHORT, TYPE_SHORT, TYPE_CHAR)
73 +
74 +STRUCT(lagg_reqall_lacp_opreq,
75 + MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ), TYPE_INT, TYPE_PTRVOID, TYPE_PTRVOID,
76 + TYPE_INT,
77 + /* struct lacp_opreq */
78 + TYPE_SHORT, MK_ARRAY(TYPE_CHAR, ETHER_ADDR_LEN), TYPE_SHORT, TYPE_SHORT,
79 + TYPE_SHORT, TYPE_CHAR, TYPE_SHORT, MK_ARRAY(TYPE_CHAR, ETHER_ADDR_LEN),
80 + TYPE_SHORT, TYPE_SHORT, TYPE_SHORT, TYPE_CHAR)
81 +
82 +STRUCT(lagg_reqflags,
83 + MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ), TYPE_INT)
84 +
85 +STRUCT(lagg_reqopts,
86 + MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ), TYPE_INT, TYPE_INT, TYPE_INT,
87 + TYPE_INT, TYPE_INT, TYPE_INT)
88 +
89 +STRUCT(in6_ifreq_int,
90 + MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ), TYPE_INT)
91 +
92 +STRUCT(in6_ifreq_ptr,
93 + MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ), TYPE_PTRVOID)
94 +
95 +STRUCT(in6_ifreq_sockaddr_in6,
96 + MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ),
97 + /* struct sockaddr_in6 */
98 + TYPE_CHAR, TYPE_CHAR, TYPE_SHORT, TYPE_INT, MK_ARRAY(TYPE_CHAR, 16),
99 + TYPE_INT)
100 +
101 +STRUCT(in6_ndireq,
102 + MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ),
103 + /* struct nd_ifinfo */
104 + TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
105 + TYPE_CHAR, TYPE_CHAR, MK_ARRAY(TYPE_CHAR, 8), MK_ARRAY(TYPE_CHAR, 8),
106 + MK_ARRAY(TYPE_CHAR, 8))
107 +
108 +STRUCT(in6_ndifreq,
109 + MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ), TYPE_PTRVOID)