Header organization/separation rule in kernel
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... http://elixir.free-electrons.com/linux/latest/source/include/uapi/linux/gene... 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? -- Best, Shiyao
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... http://elixir.free-electrons.com/linux/latest/source/include/uapi/linux/gene...
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?
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
Hello, 11.12.2017, 00:32, "Greg KH" <greg@kroah.com>:
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... http://elixir.free-electrons.com/linux/latest/source/include/uapi/linux/gene...
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
participants (3)
-
Greg KH -
Ozgur -
Shiyao MA