1 /*-
2 * Copyright (c) 2004 Robert N. M. Watson
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 *
26 * Copyright (c) 1990, 1994 Regents of The University of Michigan.
27 * All Rights Reserved.
28 *
29 * Permission to use, copy, modify, and distribute this software and
30 * its documentation for any purpose and without fee is hereby granted,
31 * provided that the above copyright notice appears in all copies and
32 * that both that copyright notice and this permission notice appear
33 * in supporting documentation, and that the name of The University
34 * of Michigan not be used in advertising or publicity pertaining to
35 * distribution of the software without specific, written prior
36 * permission. This software is supplied as is without expressed or
37 * implied warranties of any kind.
38 *
39 * This product includes software developed by the University of
40 * California, Berkeley and its contributors.
41 *
42 * Research Systems Unix Group
43 * The University of Michigan
44 * c/o Wesley Craig
45 * 535 W. William Street
46 * Ann Arbor, Michigan
47 * +1-313-764-2278
48 * netatalk@umich.edu
49 *
50 * $FreeBSD$
51 */
52
53 #ifndef _NETATALK_DDP_PCB_H_
54 #define _NETATALK_DDP_PCB_H_
55
56 int at_pcballoc(struct socket *so);
57 int at_pcbconnect(struct ddpcb *ddp, struct sockaddr *addr,
58 struct thread *td);
59 void at_pcbdetach(struct socket *so, struct ddpcb *ddp);
60 void at_pcbdisconnect(struct ddpcb *ddp);
61 int at_pcbsetaddr(struct ddpcb *ddp, struct sockaddr *addr,
62 struct thread *td);
63 void at_sockaddr(struct ddpcb *ddp, struct sockaddr **addr);
64
65 /* Lock macros for per-pcb locks. */
66 #define DDP_LOCK_INIT(ddp) mtx_init(&(ddp)->ddp_mtx, "ddp_mtx", \
67 NULL, MTX_DEF)
68 #define DDP_LOCK_DESTROY(ddp) mtx_destroy(&(ddp)->ddp_mtx)
69 #define DDP_LOCK(ddp) mtx_lock(&(ddp)->ddp_mtx)
70 #define DDP_UNLOCK(ddp) mtx_unlock(&(ddp)->ddp_mtx)
71 #define DDP_LOCK_ASSERT(ddp) mtx_assert(&(ddp)->ddp_mtx, MA_OWNED)
72
73 /* Lock macros for global pcb list lock. */
74 #define DDP_LIST_LOCK_INIT() mtx_init(&ddp_list_mtx, "ddp_list_mtx", \
75 NULL, MTX_DEF)
76 #define DDP_LIST_LOCK_DESTROY() mtx_destroy(&ddp_list_mtx)
77 #define DDP_LIST_XLOCK() mtx_lock(&ddp_list_mtx)
78 #define DDP_LIST_XUNLOCK() mtx_unlock(&ddp_list_mtx)
79 #define DDP_LIST_XLOCK_ASSERT() mtx_assert(&ddp_list_mtx, MA_OWNED)
80 #define DDP_LIST_SLOCK() mtx_lock(&ddp_list_mtx)
81 #define DDP_LIST_SUNLOCK() mtx_unlock(&ddp_list_mtx)
82 #define DDP_LIST_SLOCK_ASSERT() mtx_assert(&ddp_list_mtx, MA_OWNED)
83
84 #endif /* !_NETATALK_DDP_PCB_H_ */
Cache object: 2736e87a233567d39bb7c268912a6257
|