From 11965c7b47670da7d02eb2c543be52008c66848e Mon Sep 17 00:00:00 2001 From: Dave Barach Date: Tue, 28 May 2019 16:31:05 -0400 Subject: Break out the broom for some cleanup work Maintain the MAINTAINERS file. Removed src/plugins/*.am listings. Added a couple of plugins. Add vlib_process_create (vlib_main_t *vm, char *name, vlib_node_function_t *f, u32 log2_n_stack_bytes); /** @brief Create a vlib process * @param vm &vlib_global_main * @param f the process node function * @param log2_n_stack_bytes size of the process stack, defaults to 16K * @return newly-create node index * @warning call only on the main thread. Barrier sync required. */ This function makes it easy to spin up periodic processes when features are enabled for the first time. That coding pattern is highly recommended. Update the emacs-lisp plugin generator to use vlib_process_create, instead of generating static periodic process nodes. Change-Id: Icda33e93b9034779d3a3e228cd1110af14b058a5 Signed-off-by: Dave Barach --- extras/emacs/plugin-periodic-skel.el | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) (limited to 'extras/emacs/plugin-periodic-skel.el') diff --git a/extras/emacs/plugin-periodic-skel.el b/extras/emacs/plugin-periodic-skel.el index ff1d94e02b4..6f5675eb799 100644 --- a/extras/emacs/plugin-periodic-skel.el +++ b/extras/emacs/plugin-periodic-skel.el @@ -22,8 +22,9 @@ nil (setq plugin-name (read-string "Plugin name: "))) '(setq PLUGIN-NAME (upcase plugin-name)) '(setq capital-oh-en "ON") +'(setq main-p (concat (substring plugin-name 0 1) "mp")) "/* - * " plugin-name "_periodic.c - skeleton plug-in periodic function + * " plugin-name "_periodic.c - skeleton plug-in periodic function * * Copyright (c) * Licensed under the Apache License, Version 2.0 (the \"License\"); @@ -43,22 +44,22 @@ nil #include #include <" plugin-name "/" plugin-name ".h> -static void +static void handle_event1 (" plugin-name "_main_t *pm, f64 now, uword event_data) { clib_warning (\"received " PLUGIN-NAME "_EVENT1\"); } - -static void + +static void handle_event2 (" plugin-name "_main_t *pm, f64 now, uword event_data) { clib_warning (\"received " PLUGIN-NAME "_EVENT2\"); } - + static void handle_periodic_enable_disable (" plugin-name"_main_t *pm, f64 now, uword event_data) { - clib_warning (\"Periodic timeouts now %s\", + clib_warning (\"Periodic timeouts now %s\", event_data ? \"enabled\" : \"disabled\"); pm->periodic_timer_enabled = event_data; } @@ -120,14 +121,17 @@ static uword return 0; /* or not */ } -/* *INDENT-OFF* */ -VLIB_REGISTER_NODE ("plugin-name"_periodic_node) = +void " plugin-name "_create_periodic_process (" plugin-name "_main_t *" main-p") { - .function = " plugin-name "_periodic_process, - .type = VLIB_NODE_TYPE_PROCESS, - .name = \"" plugin-name "-periodic-process\", -}; -/* *INDENT-ON* */ + /* Already created the process node? */ + if (" main-p "->periodic_node_index > 0) + return; + + /* No, create it now and make a note of the node index */ + " main-p "->periodic_node_index = vlib_process_create (" main-p "->vlib_main, + \"" plugin-name "-periodic-process\", + " plugin-name "_periodic_process, 16 /* log2_n_stack_bytes */); +} /* * fd.io coding-style-patch-verification: " capital-oh-en " -- cgit 1.2.3-korg