copy from linux kernel many list operators.