diff --git a/repos/pc/src/drivers/nic/pc/dummies.c b/repos/pc/src/drivers/nic/pc/dummies.c index f0c497c675..e7d623850d 100644 --- a/repos/pc/src/drivers/nic/pc/dummies.c +++ b/repos/pc/src/drivers/nic/pc/dummies.c @@ -128,43 +128,6 @@ EXPORT_SYMBOL_GPL(bpf_master_redirect_enabled_key); DEFINE_PER_CPU_READ_MOSTLY(cpumask_var_t, cpu_sibling_map); EXPORT_PER_CPU_SYMBOL(cpu_sibling_map); -#include <net/rtnetlink.h> - -void rtnl_register(int protocol,int msgtype,rtnl_doit_func doit,rtnl_dumpit_func dumpit,unsigned int flags) -{ - lx_emul_trace(__func__); -} - -#include <linux/rtnetlink.h> - -int rtnl_lock_killable(void) -{ - lx_emul_trace(__func__); - return 0; -} - -#include <linux/rtnetlink.h> - -int rtnl_is_locked(void) -{ - lx_emul_trace(__func__); - return 0; -} - -#include <linux/rtnetlink.h> - -void rtnl_lock(void) -{ - lx_emul_trace(__func__); -} - -#include <linux/rtnetlink.h> - -void rtnl_unlock(void) -{ - lx_emul_trace(__func__); -} - #include <linux/netdevice.h> int __init dev_proc_init(void) diff --git a/repos/pc/src/drivers/nic/pc/rtnetlink.c b/repos/pc/src/drivers/nic/pc/rtnetlink.c new file mode 100644 index 0000000000..78c956d90d --- /dev/null +++ b/repos/pc/src/drivers/nic/pc/rtnetlink.c @@ -0,0 +1,58 @@ +/* + * \brief Basic RTNETLINK implementation with lock/unlock and netdev_run_todo() + * \author Christian Helmuth + * \date 2024-03-26 + */ + +/* + * Copyright (C) 2024 Genode Labs GmbH + * + * This file is distributed under the terms of the GNU General Public License + * version 2. + */ + +#include <lx_emul.h> + +#include <net/rtnetlink.h> +#include <linux/mutex.h> + +#include <../net/core/dev.h> + + +static DEFINE_MUTEX(rtnl_mutex); + +void rtnl_register(int protocol,int msgtype,rtnl_doit_func doit,rtnl_dumpit_func dumpit,unsigned int flags) +{ +} + + +int rtnl_lock_killable(void) +{ + return mutex_lock_killable(&rtnl_mutex); +} + + +int rtnl_is_locked(void) +{ + return mutex_is_locked(&rtnl_mutex); +} + + +void rtnl_lock(void) +{ + mutex_lock(&rtnl_mutex); +} + + +void __rtnl_unlock(void) +{ + WARN_ON(!list_empty(&net_todo_list)); + + mutex_unlock(&rtnl_mutex); +} + + +void rtnl_unlock(void) +{ + netdev_run_todo(); +} diff --git a/repos/pc/src/drivers/nic/pc/target.inc b/repos/pc/src/drivers/nic/pc/target.inc index 8e45f4ff39..4c5430f0a5 100644 --- a/repos/pc/src/drivers/nic/pc/target.inc +++ b/repos/pc/src/drivers/nic/pc/target.inc @@ -7,6 +7,7 @@ SRC_C += dummies.c SRC_C += lx_emul.c SRC_C += lx_emul/common_dummies.c SRC_C += lx_user.c +SRC_C += rtnetlink.c vpath %.c $(REP_DIR)/src/lib/pc vpath %.cc $(REP_DIR)/src/lib/pc