Home
last modified time | relevance | path

Searched full:session (Results 1 – 25 of 769) sorted by relevance

12345678910>>...31

/linux/net/can/j1939/
H A Dtransport.c47 * connection managed session was terminated.
57 * close the session.
137 …return "System resources were needed for another task so this connection managed session was termi… in j1939_xtp_abort_to_str()
139 return "A timeout occurred and this is the connection abort to close the session."; in j1939_xtp_abort_to_str()
247 void j1939_session_get(struct j1939_session *session) in j1939_session_get() argument
249 kref_get(&session->kref); in j1939_session_get()
252 /* session completion functions */
253 static void __j1939_session_drop(struct j1939_session *session) in __j1939_session_drop() argument
255 if (!session->transmission) in __j1939_session_drop()
258 j1939_sock_pending_del(session->sk); in __j1939_session_drop()
[all …]
/linux/net/bluetooth/hidp/
H A Dcore.c72 static void hidp_copy_session(struct hidp_session *session, struct hidp_conninfo *ci) in hidp_copy_session() argument
76 bacpy(&ci->bdaddr, &session->bdaddr); in hidp_copy_session()
78 ci->flags = session->flags & valid_flags; in hidp_copy_session()
81 if (session->input) { in hidp_copy_session()
82 ci->vendor = session->input->id.vendor; in hidp_copy_session()
83 ci->product = session->input->id.product; in hidp_copy_session()
84 ci->version = session->input->id.version; in hidp_copy_session()
85 if (session->input->name) in hidp_copy_session()
86 strscpy(ci->name, session->input->name, 128); in hidp_copy_session()
89 } else if (session->hid) { in hidp_copy_session()
[all …]
/linux/net/l2tp/
H A Dl2tp_core.c169 static void l2tp_session_free(struct l2tp_session *session) in l2tp_session_free() argument
171 trace_free_session(session); in l2tp_session_free()
172 if (session->tunnel) in l2tp_session_free()
173 l2tp_tunnel_put(session->tunnel); in l2tp_session_free()
174 kfree_rcu(session, rcu); in l2tp_session_free()
207 void l2tp_session_put(struct l2tp_session *session) in l2tp_session_put() argument
209 if (refcount_dec_and_test(&session->ref_count)) in l2tp_session_put()
210 l2tp_session_free(session); in l2tp_session_put()
257 struct l2tp_session *session; in l2tp_v3_session_get() local
260 session = idr_find(&pn->l2tp_v3_session_idr, session_id); in l2tp_v3_session_get()
[all …]
H A Dl2tp_debugfs.c38 unsigned long skey; /* lookup key of current session */
40 struct l2tp_session *session; /* NULL means get next tunnel */ member
56 if (pd->session) in l2tp_dfs_next_session()
57 l2tp_session_put(pd->session); in l2tp_dfs_next_session()
59 pd->session = l2tp_session_get_next(pd->net, pd->tunnel->sock, in l2tp_dfs_next_session()
64 if (!pd->session) { in l2tp_dfs_next_session()
89 /* NULL tunnel and session indicates end of list */ in l2tp_dfs_seq_start()
90 if (!pd->tunnel && !pd->session) in l2tp_dfs_seq_start()
113 if (pd->session) { in l2tp_dfs_seq_stop()
114 l2tp_session_put(pd->session); in l2tp_dfs_seq_stop()
[all …]
H A Dtrace.h40 TP_PROTO(struct l2tp_session *session),
41 TP_ARGS(session),
46 memcpy(__entry->name, session->name, L2TP_SESSION_NAME_MAX);
91 TP_PROTO(struct l2tp_session *session),
92 TP_ARGS(session),
102 memcpy(__entry->name, session->name, L2TP_SESSION_NAME_MAX);
103 __entry->tid = session->tunnel ? session->tunnel->tunnel_id : 0;
104 __entry->ptid = session->tunnel ? session->tunnel->peer_tunnel_id : 0;
105 __entry->sid = session->session_id;
106 __entry->psid = session->peer_session_id;
[all …]
H A Dl2tp_ppp.c20 * To send data in an L2TP session, userspace opens a PPPoL2TP socket and
30 * over an L2TP session:-
113 /* Private data of each session. This data lives at the end of struct
114 * l2tp_session, referenced via session->priv[].
120 struct sock __rcu *sk; /* Pointer to the session PPPoX socket */
132 /* Retrieves the pppol2tp socket associated to a session. */
133 static struct sock *pppol2tp_session_get_sock(struct l2tp_session *session) in pppol2tp_session_get_sock() argument
135 struct pppol2tp_session *ps = l2tp_session_priv(session); in pppol2tp_session_get_sock()
140 /* Helpers to obtain tunnel/session contexts from sockets.
144 struct l2tp_session *session; in pppol2tp_sock_to_session() local
[all …]
H A Dl2tp_core.h18 /* Random numbers used for internal consistency checks of tunnel and session structures */
38 /* L2TP session configuration */
61 /* Represents a session (pseudowire) instance.
63 * Is linked into a per-tunnel session list and a per-net ("global") IDR tree.
80 u32 nr; /* session NR state (receive) */
81 u32 ns; /* session NR state (send) */
90 struct hlist_node hlist; /* per-net session hlist */
91 unsigned long hlist_key; /* key for session hlist */
92 struct l2tp_session_coll_list *coll_list; /* session collision list */
108 /* Session receive handler for data packets.
[all …]
H A Dl2tp_netlink.c40 int flags, struct l2tp_session *session,
52 struct l2tp_session *session = NULL; in l2tp_nl_session_get() local
57 session = l2tp_session_get_by_ifname(net, ifname); in l2tp_nl_session_get()
64 session = l2tp_session_get(net, tunnel->sock, tunnel->version, in l2tp_nl_session_get()
70 return session; in l2tp_nl_session_get()
133 struct l2tp_session *session, in l2tp_session_notify() argument
144 NLM_F_ACK, session, cmd); in l2tp_session_notify()
535 struct l2tp_session *session; in l2tp_nl_cmd_session_create() local
645 session = l2tp_session_get(net, tunnel->sock, tunnel->version, in l2tp_nl_cmd_session_create()
647 if (session) { in l2tp_nl_cmd_session_create()
[all …]
/linux/drivers/s390/char/
H A Dvmcp.c59 static void vmcp_response_alloc(struct vmcp_session *session) in vmcp_response_alloc() argument
64 order = get_order(session->bufsize); in vmcp_response_alloc()
65 nr_pages = ALIGN(session->bufsize, PAGE_SIZE) >> PAGE_SHIFT; in vmcp_response_alloc()
74 session->response = (char *)page_to_virt(page); in vmcp_response_alloc()
75 session->cma_alloc = 1; in vmcp_response_alloc()
78 session->response = (char *)__get_free_pages(GFP_KERNEL | __GFP_RETRY_MAYFAIL, order); in vmcp_response_alloc()
81 static void vmcp_response_free(struct vmcp_session *session) in vmcp_response_free() argument
86 if (!session->response) in vmcp_response_free()
88 order = get_order(session->bufsize); in vmcp_response_free()
89 nr_pages = ALIGN(session->bufsize, PAGE_SIZE) >> PAGE_SHIFT; in vmcp_response_free()
[all …]
/linux/kernel/liveupdate/
H A Dluo_session.c13 * update. Each session acts as a named container for a set of file objects,
23 * - Userspace Interface: Session management is driven from userspace via
26 * - Serialization: Session metadata is preserved using the KHO framework. When
32 * Session Lifecycle:
35 * new, empty session and receives a file descriptor for it.
47 * `luo_session_retrieve()` with a session name to get a new file
83 * session list and other fields in this structure.
85 * @ser: The serialized session data (an array of
88 * send session data, active stays false for incoming.
122 struct luo_session *session = kzalloc_obj(*session); in luo_session_alloc() local
[all …]
/linux/tools/perf/
H A Dbuiltin-daemon.c38 * Session states:
40 * OK - session is up and running
41 * RECONFIG - session is pending for reconfiguration,
42 * new values are already loaded in session object
43 * KILL - session is pending to be killed
45 * Session object life and its state is maintained by
49 * - reads config file and setup session objects
53 * RECONFIG - session needs to be changed
55 * KILL - session needs to be killed
56 * (session i
118 struct daemon_session *session = zalloc(sizeof(*session)); daemon__add_session() local
136 struct daemon_session *session; daemon__find_session() local
146 get_session_name(const char * var,char * session,int len) get_session_name() argument
159 struct daemon_session *session; session_config() local
298 struct daemon_session *session; setup_server_config() local
320 daemon_session__run(struct daemon_session * session,struct daemon * daemon) daemon_session__run() argument
396 struct daemon_session *session; handle_signalfd() local
443 daemon_session__wait(struct daemon_session * session,struct daemon * daemon,int secs) daemon_session__wait() argument
473 struct daemon_session *session; daemon__has_alive_session() local
510 daemon_session__control(struct daemon_session * session,const char * msg,bool do_ack) daemon_session__control() argument
666 daemon_session__ping(struct daemon_session * session) daemon_session__ping() argument
674 struct daemon_session *session; cmd_session_list() local
755 daemon_session__signal(struct daemon_session * session,int sig) daemon_session__signal() argument
764 struct daemon_session *session; cmd_session_kill() local
787 struct daemon_session *session; cmd_session_ping() local
890 daemon_session__kill(struct daemon_session * session,struct daemon * daemon) daemon_session__kill() argument
918 struct daemon_session *session; daemon__signal() local
924 daemon_session__delete(struct daemon_session * session) daemon_session__delete() argument
932 daemon_session__remove(struct daemon_session * session) daemon_session__remove() argument
940 struct daemon_session *session; daemon__stop() local
972 struct daemon_session *session, *h; daemon__exit() local
984 struct daemon_session *session, *n; daemon__reconfig() local
[all...]
/linux/kernel/trace/
H A Dtrace_stat.c31 /* A stat session is the stats output in one file */
40 /* All of the sessions currently in use. Each stat file embed one session */
47 static void __reset_stat_session(struct stat_session *session) in __reset_stat_session() argument
51 rbtree_postorder_for_each_entry_safe(snode, n, &session->stat_root, node) { in __reset_stat_session()
52 if (session->ts->stat_release) in __reset_stat_session()
53 session->ts->stat_release(snode->stat); in __reset_stat_session()
57 session->stat_root = RB_ROOT; in __reset_stat_session()
60 static void reset_stat_session(struct stat_session *session) in reset_stat_session() argument
62 mutex_lock(&session->stat_mutex); in reset_stat_session()
63 __reset_stat_session(session); in reset_stat_session()
[all …]
/linux/tools/perf/util/
H A Dsession.h30 * struct perf_session- A Perf session holds the main state when the program is
36 * | Session |1..* ----->| Machine |1..* ----->| Thread |
43 * information from a live session.
46 /** @machines: Machines within the session a host and 0 or more guests. */
48 /** @evlist: List of evsels/events of the session. */
119 void perf_session__delete(struct perf_session *session);
123 int perf_session__peek_event(struct perf_session *session, off_t file_offset,
127 typedef int (*peek_events_cb_t)(struct perf_session *session,
130 int perf_session__peek_events(struct perf_session *session, u64 offset,
133 int perf_session__process_events(struct perf_session *session);
[all …]
H A Dsession.c27 #include "session.h"
45 static int perf_session__deliver_event(struct perf_session *session,
51 static int perf_session__open(struct perf_session *session) in perf_session__open() argument
53 struct perf_data *data = session->data; in perf_session__open()
55 if (perf_session__read_header(session) < 0) { in perf_session__open()
60 if (perf_header__has_feat(&session->header, HEADER_AUXTRACE)) { in perf_session__open()
68 if (perf_header__has_feat(&session->header, HEADER_STAT)) in perf_session__open()
71 if (!evlist__valid_sample_type(session->evlist)) { in perf_session__open()
76 if (!evlist__valid_sample_id_all(session->evlist)) { in perf_session__open()
81 if (!evlist__valid_read_format(session in perf_session__open()
89 perf_session__set_id_hdr_size(struct perf_session * session) perf_session__set_id_hdr_size() argument
96 perf_session__create_kernel_maps(struct perf_session * session) perf_session__create_kernel_maps() argument
105 perf_session__destroy_kernel_maps(struct perf_session * session) perf_session__destroy_kernel_maps() argument
110 perf_session__has_comm_exec(struct perf_session * session) perf_session__has_comm_exec() argument
122 perf_session__set_comm_exec(struct perf_session * session) perf_session__set_comm_exec() argument
132 struct perf_session *session = container_of(oe, struct perf_session, ordered_events__deliver_event() local
146 struct perf_session *session = zalloc(sizeof(*session)); __perf_session__new() local
247 perf_session__delete(struct perf_session * session) perf_session__delete() argument
1405 session__flush_deferred_samples(struct perf_session * session,const struct perf_tool * tool) session__flush_deferred_samples() argument
1548 perf_session__deliver_event(struct perf_session * session,union perf_event * event,const struct perf_tool * tool,u64 file_offset,const char * file_path) perf_session__deliver_event() argument
1582 perf_session__process_user_event(struct perf_session * session,union perf_event * event,u64 file_offset,const char * file_path) perf_session__process_user_event() argument
1702 perf_session__deliver_synth_event(struct perf_session * session,union perf_event * event,struct perf_sample * sample) perf_session__deliver_synth_event() argument
1717 perf_session__deliver_synth_attr_event(struct perf_session * session,const struct perf_event_attr * attr,u64 id) perf_session__deliver_synth_attr_event() argument
1750 perf_session__peek_event(struct perf_session * session,off_t file_offset,void * buf,size_t buf_sz,union perf_event ** event_ptr,struct perf_sample * sample) perf_session__peek_event() argument
1806 perf_session__peek_events(struct perf_session * session,u64 offset,u64 size,peek_events_cb_t cb,void * data) perf_session__peek_events() argument
1834 perf_session__process_event(struct perf_session * session,union perf_event * event,u64 file_offset,const char * file_path) perf_session__process_event() argument
1884 perf_session__findnew(struct perf_session * session,pid_t pid) perf_session__findnew() argument
1889 perf_session__register_idle_thread(struct perf_session * session) perf_session__register_idle_thread() argument
1899 perf_session__warn_order(const struct perf_session * session) perf_session__warn_order() argument
1916 perf_session__warn_about_errors(const struct perf_session * session) perf_session__warn_about_errors() argument
2021 perf_session__flush_thread_stacks(struct perf_session * session) perf_session__flush_thread_stacks() argument
2032 __perf_session__process_pipe_events(struct perf_session * session) __perf_session__process_pipe_events() argument
2207 __perf_session__process_decomp_events(struct perf_session * session) __perf_session__process_decomp_events() argument
2314 reader__mmap(struct reader * rd,struct perf_session * session) reader__mmap() argument
2362 reader__read_event(struct reader * rd,struct perf_session * session,struct ui_progress * prog) reader__read_event() argument
2416 reader__process_events(struct reader * rd,struct perf_session * session,struct ui_progress * prog) reader__process_events() argument
2450 process_simple(struct perf_session * session,union perf_event * event,u64 file_offset,const char * file_path) process_simple() argument
2458 __perf_session__process_events(struct perf_session * session) __perf_session__process_events() argument
2519 __perf_session__process_dir_events(struct perf_session * session) __perf_session__process_dir_events() argument
2638 perf_session__process_events(struct perf_session * session) perf_session__process_events() argument
2652 perf_session__has_traces(struct perf_session * session,const char * msg) perf_session__has_traces() argument
2665 perf_session__has_switch_events(struct perf_session * session) perf_session__has_switch_events() argument
2706 perf_session__fprintf_dsos(struct perf_session * session,FILE * fp) perf_session__fprintf_dsos() argument
2711 perf_session__fprintf_dsos_buildid(struct perf_session * session,FILE * fp,bool (skip)(struct dso * dso,int parm),int parm) perf_session__fprintf_dsos_buildid() argument
2717 perf_session__fprintf_nr_events(struct perf_session * session,FILE * fp) perf_session__fprintf_nr_events() argument
2731 perf_session__fprintf(struct perf_session * session,FILE * fp) perf_session__fprintf() argument
2743 perf_session__dump_kmaps(struct perf_session * session) perf_session__dump_kmaps() argument
2754 perf_session__find_first_evtype(struct perf_session * session,unsigned int type) perf_session__find_first_evtype() argument
2766 perf_session__cpu_bitmap(struct perf_session * session,const char * cpu_list,unsigned long * cpu_bitmap) perf_session__cpu_bitmap() argument
2811 perf_session__fprintf_info(struct perf_session * session,FILE * fp,bool full) perf_session__fprintf_info() argument
2822 perf_session__register_guest(struct perf_session * session,pid_t machine_pid) perf_session__register_guest() argument
2842 perf_session__set_guest_cpu(struct perf_session * session,pid_t pid,pid_t tid,int guest_cpu) perf_session__set_guest_cpu() argument
2857 perf_event__process_id_index(const struct perf_tool * tool __maybe_unused,struct perf_session * session,union perf_event * event) perf_event__process_id_index() argument
2941 perf_session__dsos_hit_all(struct perf_session * session) perf_session__dsos_hit_all() argument
2962 perf_session__env(struct perf_session * session) perf_session__env() argument
2984 perf_session__e_machine(struct perf_session * session,uint32_t * e_flags) perf_session__e_machine() argument
[all...]
/linux/tools/perf/Documentation/
H A Dperf-daemon.txt35 Not every 'perf record' session is suitable for running under daemon.
36 User need perf session that either produces data on query, like the
37 flight recorder sessions in above example or session that is configured
41 Each session is started with control setup (with perf record --control
77 The stop command stops all the session and the daemon process.
84 --session::
85 Send signal to specific session.
92 --session::
93 Send ping to specific session.
105 session-<NAME>.run:
[all …]
/linux/drivers/net/wwan/iosm/
H A Diosm_ipc_mux.c43 /* Reset the session/if id state. */
48 if_entry = &ipc_mux->session[if_id]; in ipc_mux_session_free()
49 /* Reset the session state. */ in ipc_mux_session_free()
53 /* Create and send the session open command. */
83 "if_id %d,session open failed,response=%d", if_id, in ipc_mux_session_open_send()
91 /* Open the first IP session. */
98 /* Search for a free session interface id. */ in ipc_mux_session_open()
105 /* Create and send the session open command. in ipc_mux_session_open()
116 skb_queue_head_init(&ipc_mux->session[if_id].ul_list); in ipc_mux_session_open()
118 ipc_mux->session[if_id].dl_head_pad_len = IPC_MEM_DL_ETH_OFFSET; in ipc_mux_session_open()
[all …]
H A Diosm_ipc_mux_codec.c180 void ipc_mux_netif_tx_flowctrl(struct mux_session *session, int idx, bool on) in ipc_mux_netif_tx_flowctrl() argument
183 ipc_wwan_tx_flowctrl(session->wwan, idx, on); in ipc_mux_netif_tx_flowctrl()
235 struct mux_session *session; in ipc_mux_dl_cmds_decode_process() local
248 return -EINVAL; /* No session interface id. */ in ipc_mux_dl_cmds_decode_process()
251 session = &ipc_mux->session[if_id]; in ipc_mux_dl_cmds_decode_process()
257 session->flow_ctl_mask = in ipc_mux_dl_cmds_decode_process()
260 session->flow_ctl_mask = ~0; in ipc_mux_dl_cmds_decode_process()
263 * to limit uplink session queueing in ipc_mux_dl_cmds_decode_process()
265 session->net_tx_stop = true; in ipc_mux_dl_cmds_decode_process()
277 session->flow_ctl_en_cnt++; in ipc_mux_dl_cmds_decode_process()
[all …]
/linux/drivers/virt/vboxguest/
H A Dvboxguest_core.c571 * given session.
573 * @session: The session.
576 * @session_termination: Set if we're called by the session cleanup code.
578 * proper session cleanup even if the host
582 * do session cleanup. Takes the session mutex.
587 struct vbg_session *session, in vbg_set_session_event_filter() argument
597 * the session is being terminated the requestor is the kernel, in vbg_set_session_event_filter()
602 session->requestor); in vbg_set_session_event_filter()
606 /* Ignore allocation failure, we must do session cleanup. */ in vbg_set_session_event_filter()
611 /* Apply the changes to the session mask. */ in vbg_set_session_event_filter()
[all …]
/linux/drivers/scsi/
H A Dscsi_transport_iscsi.c92 static atomic_t iscsi_session_nr; /* sysfs session id for next new session */
806 /* flash node session attrs show */
824 /* Flash node session attributes */
984 WARN_ONCE(1, "Invalid flashnode session attr"); in iscsi_flashnode_sess_attr_is_visible()
1221 * iscsi_create_flashnode_sess - Add flashnode session entry in sysfs
1227 * Adds a sysfs entry for the flashnode session attributes
1271 * @fnode_sess: pointer to the parent flashnode session entry
1354 * iscsi_get_flashnode_by_index -finds flashnode session entry by index
1358 * Finds the flashnode session object for the passed index
1361 * pointer to found flashnode session object on success
[all …]
/linux/tools/perf/tests/shell/
H A Ddaemon.sh135 local session=$2
142 # wait for the session to ping
146 state=`perf daemon ping --config ${config} --session ${session} | awk '{ print $1 }'`
170 [session-size]
173 [session-time]
188 # check 1st session
192 check_line_other "${line}" size "-e cpu-clock -m 1 sleep 10" ${base}/session-size \
193 ${base}/session-size/output ${base}/session-size/control \
194 ${base}/session-size/ack "0"
196 # check 2nd session
[all …]
/linux/Documentation/networking/
H A Dl2tp.rst28 associated with a socket. Each session is associated with a virtual
30 to/from L2TP. Fields in the L2TP header identify the tunnel or session
47 tunnel socket in order to establish a session.
49 4) Create a session context in the kernel using information
95 L2TP applications use netlink to manage L2TP tunnel and session
100 Create, Delete, Modify and Get for tunnel and session
104 Tunnel and session instances are identified by a locally unique
106 ``L2TP_ATTR_PEER_CONN_ID`` attributes and L2TP session ids are given
108 attributes. If netlink is used to manage L2TPv2 tunnel and session
109 instances, the L2TPv2 16-bit tunnel/session id is cast to a 32-bit
[all …]
/linux/fs/ceph/
H A Dmds_client.c49 * We maintain a stateful "session" with each MDS we interact with.
50 * Within each session, we sent periodic heartbeat messages to ensure
52 * the session times out and goes stale, our leases and capabilities
57 struct ceph_mds_session *session; member
72 struct ceph_mds_session *session) in ceph_metric_bind_session() argument
76 if (!mdsc || !session || disable_send_metrics) in ceph_metric_bind_session()
79 old = mdsc->metric.session; in ceph_metric_bind_session()
80 mdsc->metric.session = ceph_get_mds_session(session); in ceph_metric_bind_session()
1005 * create+register a new session for given mds.
1094 * drop session refs in request.
[all …]
/linux/Documentation/ABI/testing/
H A Dsysfs-class-rtrs-client5 Description: When a user of RTRS API creates a new session, a directory entry with
6 the name of that session is created under /sys/class/rtrs-client/<session-name>/
8 What: /sys/class/rtrs-client/<session-name>/add_path
12 Description: RW, adds a new path (connection) to an existing session. Expected format is the
18 What: /sys/class/rtrs-client/<session-name>/max_reconnect_attempts
25 What: /sys/class/rtrs-client/<session-name>/mp_policy
40 What: /sys/class/rtrs-client/<session-name>/paths/
44 Description: Each path belonging to a given session is listed here by its source and
45 destination address. When a new path is added to a session by writing to
48 What: /sys/class/rtrs-client/<session-name>/paths/<src@dst>/state
[all …]
/linux/drivers/net/wireless/intel/iwlwifi/mld/
H A Dsession-protect.h15 * DOC: session protection
17 * Session protection is an API from the firmware that allows the driver to
21 * needed a session protection.
29 * struct iwl_mld_session_protect - session protection parameters
30 * @end_jiffies: expected end_jiffies of current session protection.
32 * @duration: the duration in tu of current session
33 * @session_requested: A session protection command was sent and wasn't yet
54 * iwl_mld_schedule_session_protection - schedule a session protection
59 * @link_id: The link to schedule a session protection for
67 * iwl_mld_start_session_protection - start a session protection
[all …]
/linux/tools/perf/tests/
H A Dtopology.c8 #include "session.h"
36 struct perf_session *session; in session_write_header()
43 session = perf_session__new(&data, NULL); in session_write_header()
44 TEST_ASSERT_VAL("can't get session", !IS_ERR(session)); in session_write_header()
46 session->evlist = evlist__new_default(&target, /*sample_callchains=*/false); in session_write_header()
47 TEST_ASSERT_VAL("can't get evlist", session->evlist); in session_write_header()
48 session->evlist->session = session; in session_write_header()
35 struct perf_session *session; session_write_header() local
65 struct perf_session *session; check_cpu_topology() local
[all...]

12345678910>>...31