use linux kernel linked lists