]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - sys/netatalk/ddp_pcb.h
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / sys / netatalk / ddp_pcb.h
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_ */