[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [UNIKRAFT PATCH v2 5/6] lib/ukswrand: Clean-up: devfs nodes are independent of MWC algorithm
This patch cleans up the devfs integration of ukswrand: - The config option is properly namespaced. - mwc_dev.c is actually independent of the random number generator MWC. We move this file to dev.c - Crash the system when registration failed within the constructor. This behavior can be changed as soon as we introduce Unikraft init functions that can return error codes. Signed-off-by: Simon Kuenzer <simon.kuenzer@xxxxxxxxx> --- lib/ukswrand/Config.uk | 5 ++--- lib/ukswrand/Makefile.uk | 6 ++---- lib/ukswrand/{mwc_dev.c => dev.c} | 26 ++++++++++++++++++-------- 3 files changed, 22 insertions(+), 15 deletions(-) rename lib/ukswrand/{mwc_dev.c => dev.c} (83%) diff --git a/lib/ukswrand/Config.uk b/lib/ukswrand/Config.uk index a1a84bc5..40d22c86 100644 --- a/lib/ukswrand/Config.uk +++ b/lib/ukswrand/Config.uk @@ -18,9 +18,8 @@ config LIBUKSWRAND_INITIALSEED int "Initial random seed" default 23 -config DEV_RANDOM - bool "/dev/random device" +config LIBUKSWRAND_DEVFS + bool "Register random and urandom to devfs" select LIBDEVFS default n - endif diff --git a/lib/ukswrand/Makefile.uk b/lib/ukswrand/Makefile.uk index 25247474..b19094e0 100644 --- a/lib/ukswrand/Makefile.uk +++ b/lib/ukswrand/Makefile.uk @@ -3,7 +3,5 @@ $(eval $(call addlib_s,libukswrand,$(CONFIG_LIBUKSWRAND))) CINCLUDES-$(CONFIG_LIBUKSWRAND) += -I$(LIBUKSWRAND_BASE)/include CXXINCLUDES-$(CONFIG_LIBUKSWRAND) += -I$(LIBUKSWRAND_BASE)/include -LIBUKSWRAND_SRCS-$(CONFIG_LIBUKSWRAND_MWC) += $(LIBUKSWRAND_BASE)/mwc.c -ifdef CONFIG_DEV_RANDOM -LIBUKSWRAND_SRCS-$(CONFIG_LIBUKSWRAND_MWC) += $(LIBUKSWRAND_BASE)/mwc_dev.c -endif +LIBUKSWRAND_SRCS-$(CONFIG_LIBUKSWRAND_MWC) += $(LIBUKSWRAND_BASE)/mwc.c +LIBUKSWRAND_SRCS-$(CONFIG_LIBUKSWRAND_DEVFS) += $(LIBUKSWRAND_BASE)/dev.c diff --git a/lib/ukswrand/mwc_dev.c b/lib/ukswrand/dev.c similarity index 83% rename from lib/ukswrand/mwc_dev.c rename to lib/ukswrand/dev.c index 5a4cb100..c5ce5f87 100644 --- a/lib/ukswrand/mwc_dev.c +++ b/lib/ukswrand/dev.c @@ -101,19 +101,29 @@ static struct driver drv_urandom = { .name = DEV_URANDOM_NAME }; -__constructor_prio(102) static void _uk_dev_swrand_ctor(void) +/* + * NOTE: We register the device nodes as application constructor + * because at that point of time we can expect that a memory allocator + * is available. + */ +/* + * TODO: Move this registration to an Unikraft init table as soon we have it + * available. Application constructors may require random and urandom already + * being available when they get called. + */ +__constructor_prio(101) static void _uk_dev_swrand_ctor(void) { struct device *dev; - uk_pr_info("Add /dev/random and /dev/urandom\n"); + uk_pr_info("Register random and urandom to devfs\n"); - /* register /dev/urandom */ + /* register urandom */ dev = device_create(&drv_urandom, DEV_URANDOM_NAME, D_CHR); - if (dev == NULL) - uk_pr_info("Failed to register /dev/urandom\n"); + if (!dev) + UK_CRASH("Failed to register urandom to devfs\n"); - /* register /dev/random */ + /* register random */ dev = device_create(&drv_random, DEV_RANDOM_NAME, D_CHR); - if (dev == NULL) - uk_pr_info("Failed to register /dev/random\n"); + if (!dev) + UK_CRASH("Failed to register random to devfs\n"); } -- 2.20.1 _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |