Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 3 Sep 2014 20:45:33 -0700
From:      Garrett Cooper <yaneurabeya@gmail.com>
To:        freebsd-arch@freebsd.org
Cc:        Julio Merino <jmmv@freebsd.org>, "rpaulo@freebsd.org" <rpaulo@freebsd.org>
Subject:   [RFC] Add __arraycount from NetBSD to sys/cdefs.h
Message-ID:  <CAGHfRMBMPra5YXDn0e83dpVxwnarg3DL8o31xr7DhWv%2BVXskTg@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
--20cf300e5329504d8c0502352fbc
Content-Type: text/plain; charset=UTF-8

Hi all,
    In order to ease porting code and reduce divergence with NetBSD
when importing code (a large chunk of which for me are tests), I would
like to move nitems to sys/cdefs.h and alias __arraycount to nitems.
    Here's the __arraycount #define in lib/libnetbsd/sys/cdefs.h:

44 /*
45  * Return the number of elements in a statically-allocated array,
46  * __x.
47  */
48 #define __arraycount(__x)       (sizeof(__x) / sizeof(__x[0]))

    Here's the nitems #define in sys/sys/param.h:

277 #define nitems(x)       (sizeof((x)) / sizeof((x)[0]))

    sys/cdefs.h gets pulled in automatically with sys/param.h, so
anything using nitems will continue to function like before (see below
for more details). I've attached a patch which addresses all hardcoded
definitions in the tree added by FreeBSD developers.
    If there aren't any major concerns with my proposed change, I'll
put it up for review on Phabricator.
Thank you!
-Garrett

$ cat cdefs_pound_define.c
#include <sys/param.h>

#ifdef _SYS_CDEFS_H_
#warning "sys/cdefs.h has been included"
#endif
$ cc -c cdefs_pound_define.c
cdefs_pound_define.c:4:2: warning: "sys/cdefs.h has been included" [-W#warnings]
#warning "sys/cdefs.h has been included"
 ^
1 warning generated.
$ cc -D_KERNEL -c cdefs_pound_define.c
cdefs_pound_define.c:4:2: warning: "sys/cdefs.h has been included" [-W#warnings]
#warning "sys/cdefs.h has been included"
 ^
1 warning generated.
$ gcc -c cdefs_pound_define.c
cdefs_pound_define.c:4:2: warning: #warning "sys/cdefs.h has been included"
$ gcc -D_KERNEL -c cdefs_pound_define.c
cdefs_pound_define.c:4:2: warning: #warning "sys/cdefs.h has been included"

--20cf300e5329504d8c0502352fbc
Content-Type: application/octet-stream; 
	name="0001-Make-__arraycount-macros-from-NetBSD-to-ease-porting.patch"
Content-Disposition: attachment; 
	filename="0001-Make-__arraycount-macros-from-NetBSD-to-ease-porting.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_hznjv7kz0

RnJvbSA2ZjkxZTAwNjQ5NjExOGFmNGIxOGYwMmFlZDIwMmExYzg1MGVhM2QwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQ0KRnJvbTogR2FycmV0dCBDb29wZXIgPHlhbmVnb21pQGdtYWlsLmNvbT4N
CkRhdGU6IFRodSwgNCBTZXAgMjAxNCAwMjo1MTozOSAtMDcwMA0KU3ViamVjdDogW1BBVENIXSBN
YWtlIF9fYXJyYXljb3VudCBtYWNyb3MgZnJvbSBOZXRCU0QgdG8gZWFzZSBwb3J0aW5nIGZyb20N
CiBOZXRCU0QNCg0KMS4gTW92ZSBuaXRlbXMgZnJvbSBzeXMvcGFyYW0uaCB0byBzeXMvY2RlZnMu
aA0KMi4gQWxpYXMgX19hcnJheWNvdW50IHRvIG5pdGVtcw0KMy4gR2FyYmFnZSBjb2xsZWN0IGFs
bCBhZCBob2MgZGVmaW5pdGlvbnMgaW4gdGhlIHRyZWUgdGhhdCBhcmVuJ3QNCiAgIHByb3RlY3Rl
ZCBieSAjaWZuZGVmIF9fYXJyYXljb3VudCBub3QgcHJvdmlkZWQgYnkgYSB0aGlyZC1wYXJ0eSBz
b3VyY2UNCg0KU3BvbnNvcmVkIGJ5OiBFTUMgLyBJc2lsb24gU3RvcmFnZSBEaXZpc2lvbg0KLS0t
DQogY29udHJpYi9saWJjLXZpcy91bnZpcy5jICAgICAgICAgICB8IDYgLS0tLS0tDQogbGliL2xp
Ym5ldGJzZC9zeXMvY2RlZnMuaCAgICAgICAgICB8IDYgLS0tLS0tDQogc3lzL2tlcm4vc3RhY2tf
cHJvdGVjdG9yLmMgICAgICAgICB8IDEgLQ0KIHN5cy9zeXMvY2RlZnMuaCAgICAgICAgICAgICAg
ICAgICAgfCAzICsrKw0KIHN5cy9zeXMvcGFyYW0uaCAgICAgICAgICAgICAgICAgICAgfCAxIC0N
CiB1c3Iuc2Jpbi9ibHVldG9vdGgvYnRwYW5kL2J0cGFuZC5oIHwgNCAtLS0tDQogNiBmaWxlcyBj
aGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQ0KDQpkaWZmIC0tZ2l0IGEv
Y29udHJpYi9saWJjLXZpcy91bnZpcy5jIGIvY29udHJpYi9saWJjLXZpcy91bnZpcy5jDQppbmRl
eCA5Y2YxMTJjLi44M2ZmMmEwIDEwMDY0NA0KLS0tIGEvY29udHJpYi9saWJjLXZpcy91bnZpcy5j
DQorKysgYi9jb250cmliL2xpYmMtdmlzL3VudmlzLmMNCkBAIC01MSwxMiArNTEsNiBAQCBfX0ZC
U0RJRCgiJEZyZWVCU0QkIik7DQogDQogI2RlZmluZQlfRElBR0FTU0VSVCh4KQlhc3NlcnQoeCkN
CiANCi0vKg0KLSAqIFJldHVybiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGEgc3RhdGljYWxs
eS1hbGxvY2F0ZWQgYXJyYXksDQotICogX194Lg0KLSAqLw0KLSNkZWZpbmUJX19hcnJheWNvdW50
KF9feCkJKHNpemVvZihfX3gpIC8gc2l6ZW9mKF9feFswXSkpDQotDQogI2lmZGVmIF9fd2Vha19h
bGlhcw0KIF9fd2Vha19hbGlhcyhzdHJudW52aXN4LF9zdHJudW52aXN4KQ0KICNlbmRpZg0KZGlm
ZiAtLWdpdCBhL2xpYi9saWJuZXRic2Qvc3lzL2NkZWZzLmggYi9saWIvbGlibmV0YnNkL3N5cy9j
ZGVmcy5oDQppbmRleCBiM2Q1MmM5Li5mYjUzNjdmIDEwMDY0NA0KLS0tIGEvbGliL2xpYm5ldGJz
ZC9zeXMvY2RlZnMuaA0KKysrIGIvbGliL2xpYm5ldGJzZC9zeXMvY2RlZnMuaA0KQEAgLTQxLDEy
ICs0MSw2IEBADQogI2RlZmluZSBfX2RlYWQNCiAjZW5kaWYNCiANCi0vKg0KLSAqIFJldHVybiB0
aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGEgc3RhdGljYWxseS1hbGxvY2F0ZWQgYXJyYXksDQot
ICogX194Lg0KLSAqLw0KLSNkZWZpbmUJX19hcnJheWNvdW50KF9feCkJKHNpemVvZihfX3gpIC8g
c2l6ZW9mKF9feFswXSkpDQotDQogI2RlZmluZQlfX19TVFJJTkcoeCkJX19TVFJJTkcoeCkNCiAj
ZGVmaW5lCV9fU1RSSU5HKHgpCSN4DQogDQpkaWZmIC0tZ2l0IGEvc3lzL2tlcm4vc3RhY2tfcHJv
dGVjdG9yLmMgYi9zeXMva2Vybi9zdGFja19wcm90ZWN0b3IuYw0KaW5kZXggYjVmOTk3My4uNjNh
Y2I5MCAxMDA2NDQNCi0tLSBhL3N5cy9rZXJuL3N0YWNrX3Byb3RlY3Rvci5jDQorKysgYi9zeXMv
a2Vybi9zdGFja19wcm90ZWN0b3IuYw0KQEAgLTE3LDcgKzE3LDYgQEAgX19zdGFja19jaGtfZmFp
bCh2b2lkKQ0KIAlwYW5pYygic3RhY2sgb3ZlcmZsb3cgZGV0ZWN0ZWQ7IGJhY2t0cmFjZSBtYXkg
YmUgY29ycnVwdGVkIik7DQogfQ0KIA0KLSNkZWZpbmUgX19hcnJheWNvdW50KF9feCkJKHNpemVv
ZihfX3gpIC8gc2l6ZW9mKF9feFswXSkpDQogc3RhdGljIHZvaWQNCiBfX3N0YWNrX2Noa19pbml0
KHZvaWQgKmR1bW15IF9fdW51c2VkKQ0KIHsNCmRpZmYgLS1naXQgYS9zeXMvc3lzL2NkZWZzLmgg
Yi9zeXMvc3lzL2NkZWZzLmgNCmluZGV4IDRjNGMyYWYuLmJlZmM1OWQgMTAwNjQ0DQotLS0gYS9z
eXMvc3lzL2NkZWZzLmgNCisrKyBiL3N5cy9zeXMvY2RlZnMuaA0KQEAgLTczOSw0ICs3MzksNyBA
QA0KICNkZWZpbmUgX19OT19UTFMgMQ0KICNlbmRpZg0KIA0KKyNkZWZpbmUJbml0ZW1zKHgpCShz
aXplb2YoKHgpKSAvIHNpemVvZigoeClbMF0pKQ0KKyNkZWZpbmUJX19hcnJheWNvdW50KHgpCW5p
dGVtcyh4KQ0KKw0KICNlbmRpZiAvKiAhX1NZU19DREVGU19IXyAqLw0KZGlmZiAtLWdpdCBhL3N5
cy9zeXMvcGFyYW0uaCBiL3N5cy9zeXMvcGFyYW0uaA0KaW5kZXggMjY0YTM4YS4uN2VjYTc0YiAx
MDA2NDQNCi0tLSBhL3N5cy9zeXMvcGFyYW0uaA0KKysrIGIvc3lzL3N5cy9wYXJhbS5oDQpAQCAt
Mjc0LDcgKzI3NCw2IEBADQogI2lmbmRlZiBob3dtYW55DQogI2RlZmluZQlob3dtYW55KHgsIHkp
CSgoKHgpKygoeSktMSkpLyh5KSkNCiAjZW5kaWYNCi0jZGVmaW5lCW5pdGVtcyh4KQkoc2l6ZW9m
KCh4KSkgLyBzaXplb2YoKHgpWzBdKSkNCiAjZGVmaW5lCXJvdW5kZG93bih4LCB5KQkoKCh4KS8o
eSkpKih5KSkNCiAjZGVmaW5lCXJvdW5kZG93bjIoeCwgeSkgKCh4KSYofigoeSktMSkpKSAgICAg
ICAgICAvKiBpZiB5IGlzIHBvd2VyIG9mIHR3byAqLw0KICNkZWZpbmUJcm91bmR1cCh4LCB5KQko
KCgoeCkrKCh5KS0xKSkvKHkpKSooeSkpICAvKiB0byBhbnkgeSAqLw0KZGlmZiAtLWdpdCBhL3Vz
ci5zYmluL2JsdWV0b290aC9idHBhbmQvYnRwYW5kLmggYi91c3Iuc2Jpbi9ibHVldG9vdGgvYnRw
YW5kL2J0cGFuZC5oDQppbmRleCA0NDBjY2ExLi5iMjBjNmM1IDEwMDY0NA0KLS0tIGEvdXNyLnNi
aW4vYmx1ZXRvb3RoL2J0cGFuZC9idHBhbmQuaA0KKysrIGIvdXNyLnNiaW4vYmx1ZXRvb3RoL2J0
cGFuZC9idHBhbmQuaA0KQEAgLTQzLDEwICs0Myw2IEBADQogDQogI2luY2x1ZGUgImV2ZW50Lmgi
DQogDQotI2lmbmRlZiBfX2FycmF5Y291bnQNCi0jZGVmaW5lIF9fYXJyYXljb3VudChfX3gpCShz
aXplb2YoX194KSAvIHNpemVvZihfX3hbMF0pKQ0KLSNlbmRpZg0KLQ0KICNpZm5kZWYJTDJDQVBf
UFNNX0lOVkFMSUQNCiAjZGVmaW5lCUwyQ0FQX1BTTV9JTlZBTElEKHBzbSkJKCgocHNtKSAmIDB4
MDEwMSkgIT0gMHgwMDAxKQ0KICNlbmRpZg0KLS0gDQoyLjAuMg0KDQo=
--20cf300e5329504d8c0502352fbc--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAGHfRMBMPra5YXDn0e83dpVxwnarg3DL8o31xr7DhWv%2BVXskTg>