MT#55283 use typed GQueue for kernel list

... and switch to singly linked list as that's all we need.

Change-Id: Iaf3d364ed29fc01d192548967535517c33b48972
pull/1776/head
Richard Fuchs 2 years ago
parent 5bd94a1cc2
commit f0eba3ca13

@ -201,11 +201,11 @@ int kernel_del_stream_stats(struct rtpengine_command_del_target_stats *cmd) {
return -1;
}
GList *kernel_list(void) {
kernel_slist *kernel_get_list(void) {
char s[64];
int fd;
struct rtpengine_list_entry *buf;
GList *li = NULL;
kernel_slist *li = NULL;
ssize_t ret;
if (!kernel.is_open)
@ -222,7 +222,7 @@ GList *kernel_list(void) {
ret = read(fd, buf, sizeof(*buf));
if (ret != sizeof(*buf))
break;
li = g_list_prepend(li, buf);
li = t_slist_prepend(li, buf);
}
g_slice_free1(sizeof(*buf), buf);

@ -3430,7 +3430,7 @@ enum thread_looper_action kernel_stats_updater(void) {
endpoint_t ep;
/* TODO: should we realy check the count of call timers? `call_timer_iterator()` */
GList * kl = kernel_list();
__auto_type kl = kernel_get_list();
while (kl) {
ke = kl->data;
kernel2endpoint(&ep, &ke->target.local);
@ -3587,7 +3587,7 @@ enum thread_looper_action kernel_stats_updater(void) {
next:
g_slice_free1(sizeof(*ke), ke);
kl = g_list_delete_link(kl, kl);
kl = t_slist_delete_link(kl, kl);
log_info_pop();
}

@ -7,6 +7,7 @@
#include <glib.h>
#include <netinet/in.h>
#include "xt_RTPENGINE.h"
#include "containers.h"
@ -32,6 +33,8 @@ struct kernel_interface {
};
extern struct kernel_interface kernel;
TYPED_GQUEUE(kernel, struct rtpengine_list_entry)
int kernel_setup_table(unsigned int);
@ -40,7 +43,7 @@ void kernel_shutdown_table(void);
int kernel_add_stream(struct rtpengine_target_info *);
int kernel_add_destination(struct rtpengine_destination_info *);
int kernel_del_stream_stats(struct rtpengine_command_del_target_stats *);
GList *kernel_list(void);
kernel_slist *kernel_get_list(void);
int kernel_update_stats(struct rtpengine_command_stats *);
unsigned int kernel_add_call(const char *id);

Loading…
Cancel
Save