Annotation of embedaddon/libpdel/libpdel.3, revision 1.1.1.1
1.1 misho 1: .\" Copyright (c) 2001-2002 Packet Design, LLC.
2: .\" All rights reserved.
3: .\"
4: .\" Subject to the following obligations and disclaimer of warranty,
5: .\" use and redistribution of this software, in source or object code
6: .\" forms, with or without modifications are expressly permitted by
7: .\" Packet Design; provided, however, that:
8: .\"
9: .\" (i) Any and all reproductions of the source or object code
10: .\" must include the copyright notice above and the following
11: .\" disclaimer of warranties; and
12: .\" (ii) No rights are granted, in any manner or form, to use
13: .\" Packet Design trademarks, including the mark "PACKET DESIGN"
14: .\" on advertising, endorsements, or otherwise except as such
15: .\" appears in the above copyright notice or in the software.
16: .\"
17: .\" THIS SOFTWARE IS BEING PROVIDED BY PACKET DESIGN "AS IS", AND
18: .\" TO THE MAXIMUM EXTENT PERMITTED BY LAW, PACKET DESIGN MAKES NO
19: .\" REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING
20: .\" THIS SOFTWARE, INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED
21: .\" WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
22: .\" OR NON-INFRINGEMENT. PACKET DESIGN DOES NOT WARRANT, GUARANTEE,
23: .\" OR MAKE ANY REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS
24: .\" OF THE USE OF THIS SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY,
25: .\" RELIABILITY OR OTHERWISE. IN NO EVENT SHALL PACKET DESIGN BE
26: .\" LIABLE FOR ANY DAMAGES RESULTING FROM OR ARISING OUT OF ANY USE
27: .\" OF THIS SOFTWARE, INCLUDING WITHOUT LIMITATION, ANY DIRECT,
28: .\" INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, PUNITIVE, OR CONSEQUENTIAL
29: .\" DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, LOSS OF
30: .\" USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER ANY THEORY OF
31: .\" LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32: .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
33: .\" THE USE OF THIS SOFTWARE, EVEN IF PACKET DESIGN IS ADVISED OF
34: .\" THE POSSIBILITY OF SUCH DAMAGE.
35: .\"
36: .\" Author: Archie Cobbs <archie@freebsd.org>
37: .\"
38: .\" $Id: libpdel.3,v 1.23 2004/06/03 21:16:16 archie Exp $
39: .\"
40: .Dd April 22, 2002
41: .Dt LIBPDEL 3
42: .Os
43: .Sh NAME
44: .Nm libpdel
45: .Nd multi-purpose C library for embedded applications
46: .Sh LIBRARY
47: PDEL Library (libpdel, \-lpdel)
48: .Sh DESCRIPTION
49: The Packet Design Embedded Library (PDEL) is a C library containing
50: an assorted collection of code useful for developing embedded
51: applications:
52: .Pp
53: .Bl -dash -compact
54: .It
55: C data structure run-time introspection library:
56: .Xr structs 3
57: .Bl -dash -compact
58: .It
59: Support for automated conversion to/from XML
60: .It
61: Pre-defined types for most C data structures
62: .El
63: .It
64: Threaded HTTP client/server library:
65: .Xr http_server 3
66: .Bl -dash -compact
67: .It
68: SSL support
69: .It
70: User-definable C "servlets":
71: .Xr http_servlet 3
72: .It
73: Several pre-defined servlets
74: .It
75: Support for XML/HTTP and XML-RPC:
76: .Xr http_xml 3
77: .El
78: .It
79: PPP stack library (FreeBSD only):
80: .Xr pdel_ppp 3
81: .Bl -dash -compact
82: .It
83: Netgraph(4) based for kernel data packet handling
84: .It
85: Servers for PPTP and L2TP
86: .El
87: .It
88: Application configuration framework:
89: .Xr app_config 3
90: .It
91: Heap memory accounting and sanity checking:
92: .Xr typed_mem 3
93: .It
94: File template library:
95: .Xr tmpl 3
96: .It
97: Routines to configure networking interfaces, ARP table,
98: and routing table (FreeBSD only):
99: .Xr if_util 3 ,
100: .Xr route_msg 3 ,
101: .Xr uroute 3
102: .It
103: Logging library:
104: .Xr alog 3
105: .Bl -dash -compact
106: .It
107: Automated storage into circular file:
108: .Xr logfile 3
109: .It
110: .Xr syslog 3
111: compatibile
112: .El
113: .It
114: Generic TCP server:
115: .Xr tcp_server 3
116: .It
117: Generic hash table implementation:
118: .Xr ghash 3
119: .It
120: Generic balanced tree implementation:
121: .Xr gtree 3
122: .It
123: .Vt "FILE *"
124: enhancements:
125: .Bl -dash -compact
126: .It
127: Generic data "filters":
128: .Xr filter_fopen 3
129: .It
130: MIME boundary input streams:
131: .Xr boundary_fopen 3
132: .It
133: Fixed length input streams:
134: .Xr count_fopen 3
135: .It
136: String buffer input/output streams:
137: .Xr string_fp 3
138: .It
139: Timeout streams:
140: .Xr timeout_fdopen 3
141: .It
142: SSL streams:
143: .Xr ssl_fp 3
144: .El
145: .It
146: Base-64 encoding/decoding:
147: .Xr base64 3
148: .It
149: Events and actions with automated locking:
150: .Xr paction 3 ,
151: .Xr pevent 3
152: .It
153: Generalized per-thread variables:
154: .Xr tinfo 3
155: .It
156: Message ports:
157: .Xr mesg_port 3
158: .It
159: Digital signature creation/verification:
160: .Xr rsa_util_sign 3
161: .It
162: Filesystem mounting/unmounting (FreeBSD only):
163: .Xr fs_mount 3
164: .It
165: String quoting/parsing:
166: .Xr string_enquote 3
167: .El
168: .Pp
169: For more details, see the individual man pages referenced above.
170: .Sh REQUIREMENTS
171: Unlike Java, libraries written in C cannot presume a commonly accepted
172: standard for handling certain issues like threading and heap allocation.
173: Therefore,
174: .Nm libpdel
175: makes certain assumptions which user code must follow.
176: .Pp
177: First, all heap memory in
178: .Nm libpdel
179: is allocated through the
180: .Xr typed_mem 3
181: typed memory system.
182: Participation by user code in this system is optional, but it
183: must be done, or not done, consistently.
184: .Pp
185: The
186: .Nm libpdel
187: library assumes that
188: .Xr pthread 3
189: is used for user-level threading.
190: In general,
191: .Nm libpdel
192: objects are not safe to be called simultaneously from separate threads,
193: or re-entrantly from the same thread, except where explicitly documented.
194: For example, the application must guarantee serialized access to a
195: .Xr ghash 3
196: hash table; the hash table itself does not provide this protection.
197: .Pp
198: Some threads that can end up running user code
199: are subject to cancellation at any cancellation point.
200: For example, a thread created by an
201: .Xr http_server 3
202: object to handle an HTTP request will be canceled if the remote client
203: closes the TCP connection.
204: This implies that any user code which could be running under such a
205: thread must register thread cleanup hooks to release any resources
206: such as heap memory, mutexes, etc., should the thread be canceled.
207: .Pp
208: All
209: .Nm libpdel
210: functions are cancel-safe if the thread has cancel type
211: .Dv PTHREAD_CANCEL_DEFERRED ,
212: except where noted.
213: .Pp
214: Because
215: .Nm libpdel
216: in turn depends on other libraries, programs linking with
217: .Nm libpdel
218: must also link with these libraries:
219: .Pp
220: .Bl -dash -compact
221: .It
222: SSL:
223: .Li "-lssl"
224: .It
225: Cryptography:
226: .Li "-lcrypto"
227: .It
228: Netgraph (FreeBSD only):
229: .Li "-lnetgraph"
230: .It
231: RADIUS (FreeBSD only):
232: .Li "-lradius"
233: .It
234: Expat:
235: .Li "-L/usr/local/lib -lexpat"
236: .It
237: Pthreads:
238: .Li "-pthread"
239: .Li "(-lpthread"
240: on Linux)
241: .El
242: .Pp
243: Expat is available as FreeBSD port "textproc/expat2"
244: (see
245: .Xr ports 7) .
246: .Sh SEE ALSO
247: .Xr alog 3 ,
248: .Xr app_config 3 ,
249: .Xr base64 3 ,
250: .Xr boundary_fopen 3 ,
251: .Xr count_fopen 3 ,
252: .Xr filter_fopen 3 ,
253: .Xr fs_mount 3 ,
254: .Xr ghash 3 ,
255: .Xr gtree 3 ,
256: .Xr http_client 3 ,
257: .Xr http_server 3 ,
258: .Xr if_util 3 ,
259: .Xr logfile 3 ,
260: .Xr paction 3 ,
261: .Xr pdel_ppp 3 ,
262: .Xr pevent 3 ,
263: .Xr pthread 3 ,
264: .Xr route_msg 3 ,
265: .Xr rsa_util_sign 3 ,
266: .Xr string_enquote 3 ,
267: .Xr string_fp 3 ,
268: .Xr structs 3 ,
269: .Xr tcp_server 3 ,
270: .Xr timeout_fdopen 3 ,
271: .Xr tinfo 3 ,
272: .Xr tmpl 3 ,
273: .Xr typed_mem 3 ,
274: .Xr uroute 3
275: .Rs
276: .%Q The Open Group
277: .%R "Single UNIX Specification, Version 2"
278: .%T "Threads"
279: .%O "http://www.opengroup.org/onlinepubs/7908799/xsh/threads.html"
280: .Re
281: .Rs
282: .%A James Clark
283: .%T "Expat XML Parser"
284: .%O "http://sourceforge.net/projects/expat/"
285: .Re
286: .Sh HISTORY
287: The PDEL library was developed at Packet Design, LLC.
288: .Dv "http://www.packetdesign.com/"
289: .Sh AUTHORS
290: .An Archie Cobbs Aq archie@freebsd.org
291: .Sh BUGS
292: Some functionality is only supported under FreeBSD.
293: .Pp
294: Please report bugs to the author.
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>