Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 26 Sep 2016 09:05:51 -0700
From:      Marcel Moolenaar <marcel@xcllnt.net>
To:        "=?utf-8?Q?freebsd-arch=40freebsd.org?=" <freebsd-arch@freebsd.org>
Subject:   Including <sys/disk*.h> without getting ioctl(2) defines
Message-ID:  <etPan.57e9475f.18472693.e1fd@xcllnt.net>

next in thread | raw e-mail | index | archive | help
--57e9475f_169e9367_e1fd
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Background:
In order for a select set of =46reeBSD utilities to compile on non-=46ree=
BSD (specifically macOS and Linux) as build tools, we need some portabili=
ty tweaks.

Problem:
mkimg(1) includes disk partitioning headers like <sys/disklabel.h>, <sys/=
diskmbr.h> and <sys/diskpc98.h> and those headers themselves include <sys=
/ioccom.h> for ioctl(2) definitions. The <sys/ioccom.h> header does not t=
ypically exist on the host we=E2=80=99re being, causing build failures.

Proposal:
What I like is to be able to use =46reeBSD=E2=80=99s headers, but not pul=
l in =46reeBSD-specifics like ioctl(2) definitions.

Solutions:
1. Split off the definitions relating to the partitioning into a separate=
 header (e.g. <sys/bsdlabel.h>) and keep the =46reeBSD-centric definition=
s (e.g. for ioctl(2)) in the original header (e.g. <sys/disklabel.h>. The=
 original header will include the new header so that there=E2=80=99s no c=
hange to applications that include the original header. Portable tools li=
ke mkimg can include the new split-off header to get just the structure d=
efinitions and defines.

2. Expect portable utilities to define a pre-processor macro (e.g. PORTAB=
LE=5FDE=46INITIONS=5FONLY) and make =46reeBSD-specific definitions condit=
ional upon the *absence* of the preprocessor macro.

3. (Ab)use =5FPOSIX=5FSOURCE to achieve the same as point 2.

4. Get rid of the utilities that still use the ioctl(2) interface and fix=
 ports that do the same.

5. Others=3F

Notes:
1. Attached a hack to allow mkimg(1) to use =46reeBSD=E2=80=99s headers f=
or partitioning schemes. It shows what exactly the problem is without sug=
gesting a solution. It=E2=80=99s a minimal change for a reason and not to=
 be discussed as if it was a solution.

2. mkimg(1) is one example. Other utilities include makefs, mtree, etc. P=
lease consider an approach that serves as a good precedence for other uti=
lities if and when a similar situation is encountered.


--57e9475f_169e9367_e1fd
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="sys.diff"

ZGlmZiAtLWdpdCBhL3N5cy9zeXMvZGlza2xhYmVsLmggYi9zeXMvc3lzL2Rpc2tsYWJlbC5oCmlu
ZGV4IDQyYzc1N2EuLjRhZDEwZmIgMTAwNjQ0Ci0tLSBhL3N5cy9zeXMvZGlza2xhYmVsLmgKKysr
IGIvc3lzL3N5cy9kaXNrbGFiZWwuaApAQCAtMzYsNyArMzYsNiBAQAogI2lmbmRlZiBfS0VSTkVM
CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjZW5kaWYKLSNpbmNsdWRlIDxzeXMvaW9jY29tLmg+
CiAKIC8qCiAgKiBEaXNrIGRlc2NyaXB0aW9uIHRhYmxlLCBzZWUgZGlza3RhYig1KQpkaWZmIC0t
Z2l0IGEvc3lzL3N5cy9kaXNrbWJyLmggYi9zeXMvc3lzL2Rpc2ttYnIuaAppbmRleCA1ZjQ5ZWI5
Li5jZjU2NDdkIDEwMDY0NAotLS0gYS9zeXMvc3lzL2Rpc2ttYnIuaAorKysgYi9zeXMvc3lzL2Rp
c2ttYnIuaApAQCAtMzMsOCArMzMsNiBAQAogI2lmbmRlZiBfU1lTX0RJU0tNQlJfSF8KICNkZWZp
bmUJX1NZU19ESVNLTUJSX0hfCiAKLSNpbmNsdWRlIDxzeXMvaW9jY29tLmg+Ci0KICNkZWZpbmUJ
RE9TQkJTRUNUT1IJMAkvKiBET1MgYm9vdCBibG9jayByZWxhdGl2ZSBzZWN0b3IgbnVtYmVyICov
CiAjZGVmaW5lCURPU0RTTk9GRgk0NDAJLyogV2luTlQvMksvWFAgRHJpdmUgU2VyaWFsIE51bWJl
ciBvZmZzZXQgKi8KICNkZWZpbmUJRE9TUEFSVE9GRgk0NDYKQEAgLTg2LDYgKzg0LDQgQEAgdm9p
ZCBkb3NfcGFydGl0aW9uX2VuYyh2b2lkICpwcCwgc3RydWN0IGRvc19wYXJ0aXRpb24gKmQpOwog
I2RlZmluZQlEUFNFQ1QocykgKChzKSAmIDB4M2YpCQkvKiBpc29sYXRlIHJlbGV2YW50IGJpdHMg
b2Ygc2VjdG9yICovCiAjZGVmaW5lCURQQ1lMKGMsIHMpICgoYykgKyAoKChzKSAmIDB4YzApPDwy
KSkgLyogYW5kIHRob3NlIHRoYXQgYXJlIGN5bGluZGVyICovCiAKLSNkZWZpbmUgRElPQ1NNQlIg
CV9JT1coJ00nLCAxMjksIHVfY2hhcls1MTJdKQotCiAjZW5kaWYgLyogIV9TWVNfRElTS01CUl9I
XyAqLwpkaWZmIC0tZ2l0IGEvc3lzL3N5cy9kaXNrcGM5OC5oIGIvc3lzL3N5cy9kaXNrcGM5OC5o
CmluZGV4IGFhMGJiMGEuLmJjNzA5OTkgMTAwNjQ0Ci0tLSBhL3N5cy9zeXMvZGlza3BjOTguaAor
KysgYi9zeXMvc3lzL2Rpc2twYzk4LmgKQEAgLTMzLDggKzMzLDYgQEAKICNpZm5kZWYgX1NZU19E
SVNLUEM5OF9IXwogI2RlZmluZQlfU1lTX0RJU0tQQzk4X0hfCiAKLSNpbmNsdWRlIDxzeXMvaW9j
Y29tLmg+Ci0KICNkZWZpbmUJUEM5OF9CQlNFQ1RPUgkxCS8qIERPUyBib290IGJsb2NrIHJlbGF0
aXZlIHNlY3RvciBudW1iZXIgKi8KICNkZWZpbmUJUEM5OF9QQVJUT0ZGCTAKICNkZWZpbmUJUEM5
OF9QQVJUU0laRQkzMgpAQCAtNzcsNiArNzUsNCBAQCBDVEFTU0VSVChzaXplb2YgKHN0cnVjdCBw
Yzk4X3BhcnRpdGlvbikgPT0gUEM5OF9QQVJUU0laRSk7CiB2b2lkIHBjOThfcGFydGl0aW9uX2Rl
Yyh2b2lkIGNvbnN0ICpwcCwgc3RydWN0IHBjOThfcGFydGl0aW9uICpkKTsKIHZvaWQgcGM5OF9w
YXJ0aXRpb25fZW5jKHZvaWQgKnBwLCBzdHJ1Y3QgcGM5OF9wYXJ0aXRpb24gKmQpOwogCi0jZGVm
aW5lIERJT0NTUEM5OAlfSU9XKCdNJywgMTI5LCB1X2NoYXJbODE5Ml0pCi0KICNlbmRpZiAvKiAh
X1NZU19ESVNLUEM5OF9IXyAqLwo=

--57e9475f_169e9367_e1fd--




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?etPan.57e9475f.18472693.e1fd>