1 /*-
2 * SPDX-License-Identifier: BSD-3-Clause
3 *
4 * Copyright 2004 by Peter Grehan. All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * 3. The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
22 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
25 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 * SUCH DAMAGE.
28 */
29
30 /*
31 * Machine-dependent thread prototypes/definitions.
32 */
33 #ifndef _PTHREAD_MD_H_
34 #define _PTHREAD_MD_H_
35
36 #include <sys/types.h>
37 #include <machine/tls.h>
38
39 #define CPU_SPINWAIT
40
41 /* For use in _Static_assert to check structs will fit in a page */
42 #define THR_PAGE_SIZE_MIN PAGE_SIZE
43
44 static __inline struct pthread *
_get_curthread(void)45 _get_curthread(void)
46 {
47 if (_thr_initial)
48 return (_tcb_get()->tcb_thread);
49 return (NULL);
50 }
51
52 static __inline void
_thr_resolve_machdep(void)53 _thr_resolve_machdep(void)
54 {
55 }
56
57 #define __thr_setup_tsd(thread) _tcb_set((thread)->tcb)
58
59 #endif /* _PTHREAD_MD_H_ */
60