mms_list.h revision cee0fb94c0d4227de0a00efc162fb2739844b641
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*
* Copyright 2008 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _MMS_LIST_H_
#define _MMS_LIST_H_
#include <assert.h>
#include <sys/list_impl.h>
#include <stddef.h>
typedef struct mms_list_node {
struct mms_list_node *list_next;
struct mms_list_node *list_prev;
typedef struct mms_list {
struct mms_list_node list_head;
} mms_list_t;
/*
* Generic doubly-linked list implementation
*/
#define MMS_LIST_NOT_MOVED(list) \
#define mms_list_d2l(a, obj) \
#define mms_list_object(a, node) \
/*
* Define and initailze a list
*/
mms_list_t list = { \
sizeof (structname), \
}
/*
* Some useful macros
*/
/*
* Get name value string pairs.
*/
/*
* Safe to remove the current object from the list.
*/
void mms_list_destroy(mms_list_t *);
void mms_list_insert_after(mms_list_t *, void *, void *);
void mms_list_insert_before(mms_list_t *, void *, void *);
void mms_list_insert_head(mms_list_t *, void *);
void mms_list_insert_tail(mms_list_t *, void *);
void mms_list_remove(mms_list_t *, void *);
void *mms_list_head(mms_list_t *);
void *mms_list_tail(mms_list_t *);
void *mms_list_next(mms_list_t *, void *);
void *mms_list_prev(mms_list_t *, void *);
#endif /* _MMS_LIST_H_ */