From 79d77111dc4026effbbd3e7b60970b0b2ac6179c Mon Sep 17 00:00:00 2001 From: Lucas De Marchi Date: Thu, 1 Dec 2011 14:47:03 -0200 Subject: [PATCH] Add kmod_list_prev to exported functions --- libkmod/libkmod-list.c | 12 ++++++++++++ libkmod/libkmod.h | 2 ++ libkmod/libkmod.sym | 1 + 3 files changed, 15 insertions(+) diff --git a/libkmod/libkmod-list.c b/libkmod/libkmod-list.c index 6d75d66d..d74d66df 100644 --- a/libkmod/libkmod-list.c +++ b/libkmod/libkmod-list.c @@ -138,6 +138,18 @@ struct kmod_list *kmod_list_remove_data(struct kmod_list *list, return container_of(node, struct kmod_list, node); } +KMOD_EXPORT struct kmod_list *kmod_list_prev(struct kmod_list *list, + struct kmod_list *curr) +{ + if (list == NULL || curr == NULL) + return NULL; + + if (curr->node.prev == &list->node) + return NULL; + + return container_of(curr->node.prev, struct kmod_list, node); +} + KMOD_EXPORT struct kmod_list *kmod_list_next(struct kmod_list *list, struct kmod_list *curr) { diff --git a/libkmod/libkmod.h b/libkmod/libkmod.h index 2d5c281d..8e262d4e 100644 --- a/libkmod/libkmod.h +++ b/libkmod/libkmod.h @@ -56,6 +56,8 @@ void kmod_set_userdata(struct kmod_ctx *ctx, void *userdata); struct kmod_list; struct kmod_list *kmod_list_next(struct kmod_list *first_entry, struct kmod_list *list_entry); +struct kmod_list *kmod_list_prev(struct kmod_list *first_entry, + struct kmod_list *list_entry); #define kmod_list_foreach(list_entry, first_entry) \ for (list_entry = first_entry; \ list_entry != NULL; \ diff --git a/libkmod/libkmod.sym b/libkmod/libkmod.sym index 06f4077b..70fdd00b 100644 --- a/libkmod/libkmod.sym +++ b/libkmod/libkmod.sym @@ -10,6 +10,7 @@ global: kmod_set_userdata; kmod_unref; kmod_list_next; + kmod_list_prev; kmod_loaded_new; kmod_loaded_ref; kmod_loaded_unref; -- 2.47.3