LIST_HEAD_INIT is a static initializer, INIT_LIST_HEAD is a function. Both of them initialize a list_head empty.
If you statically declare a list_head , you should use LIST_HEAD_INIT , for example:
static struct list_head mylist = LIST_HEAD_INIT(mylist);
You should use INIT_LIST_HEAD() for the list header, which is dynamically allocated, usually part of another structure. There are many examples in the kernel source.
source share