REORG: applet: Uninline appctx_new function
appctx_new() is moved in the C file and appctx_init() is now private.
diff --git a/include/haproxy/applet.h b/include/haproxy/applet.h
index 97b9c34..aa9124b 100644
--- a/include/haproxy/applet.h
+++ b/include/haproxy/applet.h
@@ -36,52 +36,7 @@
struct task *task_run_applet(struct task *t, void *context, unsigned int state);
int appctx_buf_available(void *arg);
-
-/* Initializes all required fields for a new appctx. Note that it does the
- * minimum acceptable initialization for an appctx. This means only the
- * 3 integer states st0, st1, st2 and the chunk used to gather unfinished
- * commands are zeroed
- */
-static inline void appctx_init(struct appctx *appctx)
-{
- appctx->st0 = appctx->st1 = appctx->st2 = 0;
- appctx->chunk = NULL;
- appctx->io_release = NULL;
- appctx->call_rate.curr_tick = 0;
- appctx->call_rate.curr_ctr = 0;
- appctx->call_rate.prev_ctr = 0;
- appctx->state = 0;
- LIST_INIT(&appctx->wait_entry);
-}
-
-/* Tries to allocate a new appctx and initialize its main fields. The appctx
- * is returned on success, NULL on failure. The appctx must be released using
- * appctx_free(). <applet> is assigned as the applet, but it can be NULL. The
- * applet's task is always created on the current thread.
- */
-static inline struct appctx *appctx_new(struct applet *applet)
-{
- struct appctx *appctx;
-
- appctx = pool_alloc(pool_head_appctx);
- if (likely(appctx != NULL)) {
- appctx->obj_type = OBJ_TYPE_APPCTX;
- appctx->applet = applet;
- appctx_init(appctx);
- appctx->t = task_new_here();
- if (unlikely(appctx->t == NULL)) {
- pool_free(pool_head_appctx, appctx);
- return NULL;
- }
- appctx->t->process = task_run_applet;
- appctx->t->context = appctx;
- LIST_INIT(&appctx->buffer_wait.list);
- appctx->buffer_wait.target = appctx;
- appctx->buffer_wait.wakeup_cb = appctx_buf_available;
- _HA_ATOMIC_INC(&nb_applets);
- }
- return appctx;
-}
+struct appctx *appctx_new(struct applet *applet);
/* Releases an appctx previously allocated by appctx_new(). */
static inline void __appctx_free(struct appctx *appctx)
diff --git a/src/applet.c b/src/applet.c
index ff7381d..f6fea74 100644
--- a/src/applet.c
+++ b/src/applet.c
@@ -25,6 +25,52 @@
DECLARE_POOL(pool_head_appctx, "appctx", sizeof(struct appctx));
+/* Initializes all required fields for a new appctx. Note that it does the
+ * minimum acceptable initialization for an appctx. This means only the
+ * 3 integer states st0, st1, st2 and the chunk used to gather unfinished
+ * commands are zeroed
+ */
+static inline void appctx_init(struct appctx *appctx)
+{
+ appctx->st0 = appctx->st1 = appctx->st2 = 0;
+ appctx->chunk = NULL;
+ appctx->io_release = NULL;
+ appctx->call_rate.curr_tick = 0;
+ appctx->call_rate.curr_ctr = 0;
+ appctx->call_rate.prev_ctr = 0;
+ appctx->state = 0;
+ LIST_INIT(&appctx->wait_entry);
+}
+
+/* Tries to allocate a new appctx and initialize its main fields. The appctx
+ * is returned on success, NULL on failure. The appctx must be released using
+ * appctx_free(). <applet> is assigned as the applet, but it can be NULL. The
+ * applet's task is always created on the current thread.
+ */
+struct appctx *appctx_new(struct applet *applet)
+{
+ struct appctx *appctx;
+
+ appctx = pool_alloc(pool_head_appctx);
+ if (likely(appctx != NULL)) {
+ appctx->obj_type = OBJ_TYPE_APPCTX;
+ appctx->applet = applet;
+ appctx_init(appctx);
+ appctx->t = task_new_here();
+ if (unlikely(appctx->t == NULL)) {
+ pool_free(pool_head_appctx, appctx);
+ return NULL;
+ }
+ appctx->t->process = task_run_applet;
+ appctx->t->context = appctx;
+ LIST_INIT(&appctx->buffer_wait.list);
+ appctx->buffer_wait.target = appctx;
+ appctx->buffer_wait.wakeup_cb = appctx_buf_available;
+ _HA_ATOMIC_INC(&nb_applets);
+ }
+ return appctx;
+}
+
/* Callback used to wake up an applet when a buffer is available. The applet
* <appctx> is woken up if an input buffer was requested for the associated
* stream interface. In this case the buffer is immediately allocated and the