1da04c52ab1036048520fca265cf02b61dca789e0Dima Zavin/* 2da04c52ab1036048520fca265cf02b61dca789e0Dima Zavin * Copyright (C) 2008 The Android Open Source Project 3da04c52ab1036048520fca265cf02b61dca789e0Dima Zavin * 4da04c52ab1036048520fca265cf02b61dca789e0Dima Zavin * Licensed under the Apache License, Version 2.0 (the "License"); 5da04c52ab1036048520fca265cf02b61dca789e0Dima Zavin * you may not use this file except in compliance with the License. 6da04c52ab1036048520fca265cf02b61dca789e0Dima Zavin * You may obtain a copy of the License at 7da04c52ab1036048520fca265cf02b61dca789e0Dima Zavin * 8da04c52ab1036048520fca265cf02b61dca789e0Dima Zavin * http://www.apache.org/licenses/LICENSE-2.0 9da04c52ab1036048520fca265cf02b61dca789e0Dima Zavin * 10da04c52ab1036048520fca265cf02b61dca789e0Dima Zavin * Unless required by applicable law or agreed to in writing, software 11da04c52ab1036048520fca265cf02b61dca789e0Dima Zavin * distributed under the License is distributed on an "AS IS" BASIS, 12da04c52ab1036048520fca265cf02b61dca789e0Dima Zavin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13da04c52ab1036048520fca265cf02b61dca789e0Dima Zavin * See the License for the specific language governing permissions and 14da04c52ab1036048520fca265cf02b61dca789e0Dima Zavin * limitations under the License. 15da04c52ab1036048520fca265cf02b61dca789e0Dima Zavin */ 16da04c52ab1036048520fca265cf02b61dca789e0Dima Zavin 17da04c52ab1036048520fca265cf02b61dca789e0Dima Zavin#include <cutils/list.h> 18da04c52ab1036048520fca265cf02b61dca789e0Dima Zavin 19da04c52ab1036048520fca265cf02b61dca789e0Dima Zavinvoid list_init(struct listnode *node) 20da04c52ab1036048520fca265cf02b61dca789e0Dima Zavin{ 21da04c52ab1036048520fca265cf02b61dca789e0Dima Zavin node->next = node; 22da04c52ab1036048520fca265cf02b61dca789e0Dima Zavin node->prev = node; 23da04c52ab1036048520fca265cf02b61dca789e0Dima Zavin} 24da04c52ab1036048520fca265cf02b61dca789e0Dima Zavin 25da04c52ab1036048520fca265cf02b61dca789e0Dima Zavinvoid list_add_tail(struct listnode *head, struct listnode *item) 26da04c52ab1036048520fca265cf02b61dca789e0Dima Zavin{ 27da04c52ab1036048520fca265cf02b61dca789e0Dima Zavin item->next = head; 28da04c52ab1036048520fca265cf02b61dca789e0Dima Zavin item->prev = head->prev; 29da04c52ab1036048520fca265cf02b61dca789e0Dima Zavin head->prev->next = item; 30da04c52ab1036048520fca265cf02b61dca789e0Dima Zavin head->prev = item; 31da04c52ab1036048520fca265cf02b61dca789e0Dima Zavin} 32da04c52ab1036048520fca265cf02b61dca789e0Dima Zavin 33da04c52ab1036048520fca265cf02b61dca789e0Dima Zavinvoid list_remove(struct listnode *item) 34da04c52ab1036048520fca265cf02b61dca789e0Dima Zavin{ 35da04c52ab1036048520fca265cf02b61dca789e0Dima Zavin item->next->prev = item->prev; 36da04c52ab1036048520fca265cf02b61dca789e0Dima Zavin item->prev->next = item->next; 37da04c52ab1036048520fca265cf02b61dca789e0Dima Zavin} 38