X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvlib%2Fnode.h;h=955ffb98600e470e556367d1e187ebd7bd4dcd38;hb=cc8249c5fde1b00b043066617d35325dd1606cd6;hp=296d183284123a85e1e970340dbb79ae5668b228;hpb=9652177bc12171bb7141ef7a92e0053204f7ed87;p=vpp.git diff --git a/src/vlib/node.h b/src/vlib/node.h index 296d1832841..955ffb98600 100644 --- a/src/vlib/node.h +++ b/src/vlib/node.h @@ -201,7 +201,8 @@ static __clib_unused vlib_node_registration_t __clib_unused_##x #endif #define VLIB_NODE_FN(node) \ - uword CLIB_MARCH_SFX (node##_fn) (); \ + uword CLIB_MARCH_SFX (node##_fn) (vlib_main_t *, vlib_node_runtime_t *, \ + vlib_frame_t *); \ static vlib_node_fn_registration_t CLIB_MARCH_SFX ( \ node##_fn_registration) = { \ .function = &CLIB_MARCH_SFX (node##_fn), \ @@ -274,7 +275,7 @@ typedef struct vlib_node_t u32 runtime_index; /* Runtime data for this node. */ - void *runtime_data; + u8 *runtime_data; /* Node flags. */ u16 flags; @@ -389,6 +390,9 @@ typedef struct vlib_frame_t /* Number of vector elements currently in frame. */ u16 n_vectors; + /* Index of frame size corresponding to allocated node. */ + u16 frame_size_index; + /* Scalar and vector arguments to next node. */ u8 arguments[0]; } vlib_frame_t; @@ -503,6 +507,8 @@ typedef struct vlib_node_runtime_t zero before first run of this node. */ + CLIB_ALIGN_MARK (runtime_data_pad, 8); + u8 runtime_data[0]; /**< Function dependent node-runtime data. This data is thread local, and it is not @@ -571,7 +577,7 @@ typedef struct u32 n_suspends; /* Vectors of pending event data indexed by event type index. */ - void **pending_event_data_by_type_index; + u8 **pending_event_data_by_type_index; /* Bitmap of event type-indices with non-empty vectors. */ uword *non_empty_event_type_bitmap; @@ -684,8 +690,9 @@ typedef struct vlib_node_runtime_t *nodes_by_type[VLIB_N_NODE_TYPE]; /* Node runtime indices for input nodes with pending interrupts. */ - void *interrupts; - volatile u32 *pending_interrupts; + void *input_node_interrupts; + void *pre_input_node_interrupts; + volatile u8 pending_interrupts; /* Input nodes are switched from/to interrupt to/from polling mode when average vector length goes above/below polling/interrupt