sdk-core v2026.11.05
PS2 SDK - core tier (build-critical EE/IOP modules)
Loading...
Searching...
No Matches
snmp_threadsync.h
Go to the documentation of this file.
1
6
7/*
8 * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
9 * All rights reserved.
10 *
11 * Redistribution and use in source and binary forms, with or without modification,
12 * are permitted provided that the following conditions are met:
13 *
14 * 1. Redistributions of source code must retain the above copyright notice,
15 * this list of conditions and the following disclaimer.
16 * 2. Redistributions in binary form must reproduce the above copyright notice,
17 * this list of conditions and the following disclaimer in the documentation
18 * and/or other materials provided with the distribution.
19 * 3. The name of the author may not be used to endorse or promote products
20 * derived from this software without specific prior written permission.
21 *
22 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
23 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
24 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
25 * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
26 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
27 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
30 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
31 * OF SUCH DAMAGE.
32 *
33 * This file is part of the lwIP TCP/IP stack.
34 *
35 * Author: Dirk Ziegelmeier <dziegel@gmx.de>
36 *
37 */
38
39#ifndef LWIP_HDR_APPS_SNMP_THREADSYNC_H
40#define LWIP_HDR_APPS_SNMP_THREADSYNC_H
41
42#include "lwip/apps/snmp_opts.h"
43
44#ifdef __cplusplus
45extern "C" {
46#endif
47
48#if LWIP_SNMP /* don't build if not configured for use in lwipopts.h */
49
50#include "lwip/apps/snmp_core.h"
51#include "lwip/sys.h"
52
53typedef void (*snmp_threadsync_called_fn)(void* arg);
54typedef void (*snmp_threadsync_synchronizer_fn)(snmp_threadsync_called_fn fn, void* arg);
55
56
58struct threadsync_data
59{
60 union {
61 snmp_err_t err;
62 s16_t s16;
63 } retval;
64 union {
65 const u32_t *root_oid;
66 void *value;
67 } arg1;
68 union {
69 u8_t root_oid_len;
70 u16_t len;
71 } arg2;
72 const struct snmp_threadsync_node *threadsync_node;
73 struct snmp_node_instance proxy_instance;
74};
75
77struct snmp_threadsync_instance
78{
79 sys_sem_t sem;
80 sys_mutex_t sem_usage_mutex;
81 snmp_threadsync_synchronizer_fn sync_fn;
82 struct threadsync_data data;
83};
84
86struct snmp_threadsync_node
87{
88 /* inherited "base class" members */
89 struct snmp_leaf_node node;
90
91 const struct snmp_leaf_node *target;
92 struct snmp_threadsync_instance *instance;
93};
94
95snmp_err_t snmp_threadsync_get_instance(const u32_t *root_oid, u8_t root_oid_len, struct snmp_node_instance* instance);
96snmp_err_t snmp_threadsync_get_next_instance(const u32_t *root_oid, u8_t root_oid_len, struct snmp_node_instance* instance);
97
99#define SNMP_CREATE_THREAD_SYNC_NODE(oid, target_leaf_node, threadsync_instance) \
100 {{{ SNMP_NODE_THREADSYNC, (oid) }, \
101 snmp_threadsync_get_instance, \
102 snmp_threadsync_get_next_instance }, \
103 (target_leaf_node), \
104 (threadsync_instance) }
105
107void snmp_threadsync_init(struct snmp_threadsync_instance *instance, snmp_threadsync_synchronizer_fn sync_fn);
108
109#endif /* LWIP_SNMP */
110
111#ifdef __cplusplus
112}
113#endif
114
115#endif /* LWIP_HDR_APPS_SNMP_THREADSYNC_H */