dev: _with_ptr process node calls
Type: improvement Change-Id: Ib392d74e7629cef5d335e4320a71ceec25ddb020 Signed-off-by: Damjan Marion <damjan.marion@gmail.com>
This commit is contained in:
committed by
Florin Coras
parent
d794af6771
commit
46beb0d48b
@@ -104,6 +104,11 @@ typedef void (vnet_dev_rx_queue_op_no_rv_t) (vlib_main_t *,
|
||||
vnet_dev_rx_queue_t *);
|
||||
typedef void (vnet_dev_tx_queue_op_no_rv_t) (vlib_main_t *,
|
||||
vnet_dev_tx_queue_t *);
|
||||
typedef vnet_dev_rv_t (vnet_dev_op_with_ptr_t) (vlib_main_t *, vnet_dev_t *,
|
||||
void *);
|
||||
typedef vnet_dev_rv_t (vnet_dev_port_op_with_ptr_t) (vlib_main_t *,
|
||||
vnet_dev_port_t *,
|
||||
void *);
|
||||
|
||||
typedef u16 vnet_dev_queue_id_t;
|
||||
typedef u16 vnet_dev_bus_index_t;
|
||||
@@ -612,6 +617,9 @@ vnet_dev_rv_t vnet_dev_process_call_op (vlib_main_t *, vnet_dev_t *,
|
||||
vnet_dev_op_t *);
|
||||
vnet_dev_rv_t vnet_dev_process_call_op_no_rv (vlib_main_t *, vnet_dev_t *,
|
||||
vnet_dev_op_no_rv_t *);
|
||||
vnet_dev_rv_t vnet_dev_process_call_op_with_ptr (vlib_main_t *, vnet_dev_t *,
|
||||
vnet_dev_op_with_ptr_t *,
|
||||
void *);
|
||||
void vnet_dev_process_call_op_no_wait (vlib_main_t *, vnet_dev_t *,
|
||||
vnet_dev_op_no_rv_t *);
|
||||
vnet_dev_rv_t vnet_dev_process_call_port_op (vlib_main_t *, vnet_dev_port_t *,
|
||||
@@ -619,6 +627,9 @@ vnet_dev_rv_t vnet_dev_process_call_port_op (vlib_main_t *, vnet_dev_port_t *,
|
||||
vnet_dev_rv_t vnet_dev_process_call_port_op_no_rv (vlib_main_t *vm,
|
||||
vnet_dev_port_t *,
|
||||
vnet_dev_port_op_no_rv_t *);
|
||||
vnet_dev_rv_t
|
||||
vnet_dev_process_call_port_op_with_ptr (vlib_main_t *, vnet_dev_port_t *,
|
||||
vnet_dev_port_op_with_ptr_t *, void *);
|
||||
void vnet_dev_process_call_port_op_no_wait (vlib_main_t *, vnet_dev_port_t *,
|
||||
vnet_dev_port_op_no_rv_t *);
|
||||
vnet_dev_rv_t
|
||||
|
||||
@@ -20,9 +20,11 @@ typedef enum
|
||||
VNET_DEV_EVENT_PROCESS_QUIT,
|
||||
VNET_DEV_EVENT_CALL_OP,
|
||||
VNET_DEV_EVENT_CALL_OP_NO_RV,
|
||||
VNET_DEV_EVENT_CALL_OP_WITH_PTR,
|
||||
VNET_DEV_EVENT_CALL_OP_NO_WAIT,
|
||||
VNET_DEV_EVENT_CALL_PORT_OP,
|
||||
VNET_DEV_EVENT_CALL_PORT_OP_NO_RV,
|
||||
VNET_DEV_EVENT_CALL_PORT_OP_WITH_PTR,
|
||||
VNET_DEV_EVENT_CALL_PORT_OP_NO_WAIT,
|
||||
VNET_DEV_EVENT_CLOCK = ~0
|
||||
} __clib_packed vnet_dev_event_t;
|
||||
@@ -50,6 +52,11 @@ typedef struct
|
||||
vnet_dev_op_no_rv_t *op;
|
||||
} call_op_no_rv;
|
||||
struct
|
||||
{
|
||||
vnet_dev_op_with_ptr_t *op;
|
||||
void *ptr;
|
||||
} call_op_with_ptr;
|
||||
struct
|
||||
{
|
||||
vnet_dev_op_no_rv_t *op;
|
||||
} call_op_no_wait;
|
||||
@@ -64,6 +71,12 @@ typedef struct
|
||||
vnet_dev_port_t *port;
|
||||
} call_port_op_no_rv;
|
||||
struct
|
||||
{
|
||||
vnet_dev_port_op_with_ptr_t *op;
|
||||
vnet_dev_port_t *port;
|
||||
void *ptr;
|
||||
} call_port_op_with_ptr;
|
||||
struct
|
||||
{
|
||||
vnet_dev_port_op_no_rv_t *op;
|
||||
vnet_dev_port_t *port;
|
||||
@@ -132,6 +145,10 @@ vnet_dev_process_one_event (vlib_main_t *vm, vnet_dev_t *dev,
|
||||
ev_log_debug (vm, dev, ed, "call op no rv");
|
||||
ed->call_op_no_rv.op (vm, dev);
|
||||
break;
|
||||
case VNET_DEV_EVENT_CALL_OP_WITH_PTR:
|
||||
ev_log_debug (vm, dev, ed, "call op woth ptr");
|
||||
rv = ed->call_op_with_ptr.op (vm, dev, ed->call_op_with_ptr.ptr);
|
||||
break;
|
||||
case VNET_DEV_EVENT_CALL_OP_NO_WAIT:
|
||||
ev_log_debug (vm, dev, ed, "call op no wait");
|
||||
ed->call_op_no_wait.op (vm, dev);
|
||||
@@ -144,6 +161,11 @@ vnet_dev_process_one_event (vlib_main_t *vm, vnet_dev_t *dev,
|
||||
ev_log_debug (vm, dev, ed, "call port op no rv");
|
||||
ed->call_port_op_no_rv.op (vm, ed->call_port_op_no_rv.port);
|
||||
break;
|
||||
case VNET_DEV_EVENT_CALL_PORT_OP_WITH_PTR:
|
||||
ev_log_debug (vm, dev, ed, "call port op woth ptr");
|
||||
rv = ed->call_port_op_with_ptr.op (vm, ed->call_port_op_with_ptr.port,
|
||||
ed->call_port_op_with_ptr.ptr);
|
||||
break;
|
||||
case VNET_DEV_EVENT_CALL_PORT_OP_NO_WAIT:
|
||||
ev_log_debug (vm, dev, ed, "call port op no wait");
|
||||
ed->call_port_op_no_wait.op (vm, ed->call_port_op_no_wait.port);
|
||||
@@ -477,6 +499,19 @@ vnet_dev_process_call_op_no_rv (vlib_main_t *vm, vnet_dev_t *dev,
|
||||
return vnet_dev_process_event_send_and_wait (vm, dev, ed);
|
||||
}
|
||||
|
||||
vnet_dev_rv_t
|
||||
vnet_dev_process_call_op_with_ptr (vlib_main_t *vm, vnet_dev_t *dev,
|
||||
vnet_dev_op_with_ptr_t *op, void *p)
|
||||
{
|
||||
vnet_dev_event_data_t *ed = vnet_dev_event_data_alloc (vm, dev);
|
||||
*ed = (vnet_dev_event_data_t){
|
||||
.event = VNET_DEV_EVENT_CALL_OP_WITH_PTR,
|
||||
.call_op_with_ptr = { .op = op, .ptr = p },
|
||||
};
|
||||
|
||||
return vnet_dev_process_event_send_and_wait (vm, dev, ed);
|
||||
}
|
||||
|
||||
void
|
||||
vnet_dev_process_call_op_no_wait (vlib_main_t *vm, vnet_dev_t *dev,
|
||||
vnet_dev_op_no_rv_t *op)
|
||||
@@ -516,6 +551,20 @@ vnet_dev_process_call_port_op_no_rv (vlib_main_t *vm, vnet_dev_port_t *port,
|
||||
return vnet_dev_process_event_send_and_wait (vm, port->dev, ed);
|
||||
}
|
||||
|
||||
vnet_dev_rv_t
|
||||
vnet_dev_process_call_port_op_with_ptr (vlib_main_t *vm, vnet_dev_port_t *port,
|
||||
vnet_dev_port_op_with_ptr_t *op,
|
||||
void *p)
|
||||
{
|
||||
vnet_dev_event_data_t *ed = vnet_dev_event_data_alloc (vm, port->dev);
|
||||
*ed = (vnet_dev_event_data_t){
|
||||
.event = VNET_DEV_EVENT_CALL_PORT_OP_WITH_PTR,
|
||||
.call_port_op_with_ptr = { .op = op, .port = port, .ptr = p },
|
||||
};
|
||||
|
||||
return vnet_dev_process_event_send_and_wait (vm, port->dev, ed);
|
||||
}
|
||||
|
||||
void
|
||||
vnet_dev_process_call_port_op_no_wait (vlib_main_t *vm, vnet_dev_port_t *port,
|
||||
vnet_dev_port_op_no_rv_t *op)
|
||||
|
||||
Reference in New Issue
Block a user