From mboxrd@z Thu Jan 1 00:00:00 1970 From: ozgur@goosey.org (Ozgur) Date: Mon, 11 Dec 2017 00:38:08 +0300 Subject: Header organization/separation rule in kernel In-Reply-To: <20171210213122.GA19494@kroah.com> References: <20171210213122.GA19494@kroah.com> Message-ID: <1583791512941888@web44o.yandex.ru> To: kernelnewbies@lists.kernelnewbies.org List-Id: kernelnewbies.lists.kernelnewbies.org Hello, 11.12.2017, 00:32, "Greg KH" : > On Sun, Dec 10, 2017 at 11:21:46PM +0800, Shiyao MA wrote: >> ?Hi, >> >> ?I wonder the header separation rule in kernel. >> ?To make this question concrete, for example, let's targeting genetlink.h >> >> ?It can be found in: >> >> ?http://elixir.free-electrons.com/linux/latest/source/include/net/genetlink.h >> ?http://elixir.free-electrons.com/linux/latest/source/include/linux/genetlink.h >> ?http://elixir.free-electrons.com/linux/latest/source/include/uapi/linux/genetlink.h >> >> ?so basically three parts, in uapi, linux/genetlink.h, and net/genetlink.h. >> >> ?I understand the necessity of uapi, but why divide the genetlink.h in >> ?linux and the net folder? >> ?What's the benefit of such separation? hm, I think if you use a diff and you would see the why different header file. for example you development a network card driver and you not be use to linux kernel genetlink header file. use to network side genetlink.h. So please check: #ifndef __NET_GENERIC_NETLINK_H #define __NET_GENERIC_NETLINK_H #ifndef __LINUX_GENERIC_NETLINK_H #define __LINUX_GENERIC_NETLINK_H #ifndef _UAPI__LINUX_GENERIC_NETLINK_H #define _UAPI__LINUX_GENERIC_NETLINK_H they are like the assets that separate and address each others. > Some things are only for the networking subsystem, and some things are > for any other part of the kernel. > > Hope this helps, > > greg k-h Regards, Ozgur >