33 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_NET 60 _0C(
buf->nb_dom ==
buf->nb_tm->ntm_dom) &&
62 &
buf->nb_tm->ntm_q[
buf->nb_qtype],
buf))));
81 buf->nb_buffer.ov_buf !=
NULL &&
93 rc =
dom->nd_xprt->nx_ops->xo_buf_register(
buf);
117 &
buf->nb_dom_linkage));
119 dom->nd_xprt->nx_ops->xo_buf_deregister(
buf);
136 struct buf_add_checks {
140 bool post_check_desc;
142 static const struct buf_add_checks checks[
M0_NET_QT_NR] = {
150 const struct buf_add_checks *todo;
168 buf->nb_min_receive_size != 0 &&
169 buf->nb_min_receive_size <=
count &&
170 buf->nb_max_receive_msgs != 0));
174 todo = &checks[
buf->nb_qtype];
191 if (todo->post_check_desc) {
193 buf->nb_desc.nbd_len = 0;
197 buf->nb_desc.nbd_len > 0 &&
198 buf->nb_desc.nbd_data !=
NULL));
203 if (now >=
buf->nb_timeout) {
213 m0_net_tm_tlink_init_at_tail(
buf, ql);
215 buf->nb_add_time = now;
216 buf->nb_msgs_received = 0;
220 rc =
dom->nd_xprt->nx_ops->xo_buf_add(
buf);
222 m0_net_tm_tlink_del_fini(
buf);
229 if (todo->check_ep) {
238 buf->nb_desc.nbd_len != 0 &&
239 buf->nb_desc.nbd_data !=
NULL));
284 dom->nd_xprt->nx_ops->xo_buf_del(
buf);
349 m0_net_tm_tlist_del(
buf);
355 qtype =
buf->nb_qtype;
358 q->nqs_num_f_events++;
361 q->nqs_num_s_events++;
367 len =
buf->nb_length;
369 addtime =
buf->nb_add_time;
372 q->nqs_time_in_queue =
m0_time_add(
q->nqs_time_in_queue, tdiff);
373 q->nqs_total_bytes += len;
374 q->nqs_max_bytes =
max_check(
q->nqs_max_bytes, len);
383 ++
buf->nb_msgs_received;
400 cb =
buf->nb_callbacks->nbc_cb[qtype];
415 #undef M0_TRACE_SUBSYSTEM
M0_INTERNAL void m0_mutex_unlock(struct m0_mutex *mutex)
int const char const void size_t int flags
static struct m0_semaphore q
M0_INTERNAL int m0_net_buffer_register(struct m0_net_buffer *buf, struct m0_net_domain *dom)
const m0_time_t M0_TIME_NEVER
M0_INTERNAL bool m0_mutex_is_not_locked(const struct m0_mutex *mutex)
struct m0_net_qstats ntm_qstats[M0_NET_QT_NR]
enum m0_net_tm_state ntm_state
struct m0_net_domain * ntm_dom
M0_INTERNAL void m0_list_del(struct m0_list_link *old)
M0_INTERNAL bool m0_net__ep_invariant(struct m0_net_end_point *ep, struct m0_net_transfer_mc *tm, bool under_tm_mutex)
M0_INTERNAL bool m0_net_buffer_del(struct m0_net_buffer *buf, struct m0_net_transfer_mc *tm)
M0_INTERNAL void m0_mutex_lock(struct m0_mutex *mutex)
M0_ADDB2_ADD(M0_AVI_FS_CREATE, new_fid.f_container, new_fid.f_key, mode, rc)
struct m0_net_buffer * nbe_buffer
void(* m0_net_buffer_cb_proc_t)(const struct m0_net_buffer_event *ev)
M0_INTERNAL void m0_net_buffer_event_post(const struct m0_net_buffer_event *ev)
struct m0_net_end_point * nbe_ep
M0_INTERNAL void m0_net__tm_provision_recv_q(struct m0_net_transfer_mc *tm)
#define M0_CHECK_EX(cond)
M0_INTERNAL bool m0_net__buffer_event_invariant(const struct m0_net_buffer_event *ev)
return M0_ERR(-EOPNOTSUPP)
enum m0_net_queue_type nb_qtype
M0_INTERNAL bool m0_mutex_is_locked(const struct m0_mutex *mutex)
M0_INTERNAL bool m0_net__qtype_is_valid(enum m0_net_queue_type qt)
m0_time_t m0_time_now(void)
static struct m0_stob_domain * dom
uint32_t ntm_callback_counter
M0_INTERNAL bool m0_list_contains(const struct m0_list *list, const struct m0_list_link *link)
M0_INTERNAL void m0_net_end_point_get(struct m0_net_end_point *ep)
m0_time_t m0_time_add(const m0_time_t t1, const m0_time_t t2)
struct m0_tl ntm_q[M0_NET_QT_NR]
M0_INTERNAL m0_bcount_t m0_vec_count(const struct m0_vec *vec)
static struct m0_pool pool
void m0_net_end_point_put(struct m0_net_end_point *ep)
M0_INTERNAL void m0_net_buffer_deregister(struct m0_net_buffer *buf, struct m0_net_domain *dom)
M0_INTERNAL bool m0_net__buffer_invariant(const struct m0_net_buffer *buf)
M0_INTERNAL int m0_net__buffer_add(struct m0_net_buffer *buf, struct m0_net_transfer_mc *tm)
#define M0_FI_ENABLED(tag)
M0_INTERNAL bool m0_net__tm_invariant(const struct m0_net_transfer_mc *tm)
M0_INTERNAL int m0_net_buffer_add(struct m0_net_buffer *buf, struct m0_net_transfer_mc *tm)
m0_time_t m0_time_sub(const m0_time_t t1, const m0_time_t t2)
M0_INTERNAL void m0_net__tm_post_callback(struct m0_net_transfer_mc *tm)
M0_INTERNAL void m0_list_add_tail(struct m0_list *head, struct m0_list_link *new)
struct m0_net_buffer_pool * ntm_recv_pool