Hello, 11.12.2017, 00:32, "Greg KH" <greg@xxxxxxxxx>: > 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 > _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies