/* $NetBSD: pthread_specific.c,v 1.11 2007/08/16 12:01:49 ad Exp $ */ /*- * Copyright (c) 2001, 2007 The NetBSD Foundation, Inc. * All rights reserved. * * This code is derived from software contributed to The NetBSD Foundation * by Nathan J. Williams. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: * This product includes software developed by the NetBSD * Foundation, Inc. and its contributors. * 4. Neither the name of The NetBSD Foundation nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #include __RCSID("$NetBSD: pthread_specific.c,v 1.11 2007/08/16 12:01:49 ad Exp $"); /* Functions and structures dealing with thread-specific data */ #include "pthread.h" #include "pthread_int.h" __strong_alias(__libc_thr_setspecific,pthread_setspecific) __strong_alias(__libc_thr_getspecific,pthread_getspecific) int pthread_setspecific(pthread_key_t key, const void *value) { pthread_t self; self = pthread__self(); /* * We can't win here on constness. Having been given a * "const void *", we can only assign it to other const void *, * and return it from functions that are const void *, without * generating a warning. */ /*LINTED const cast*/ self->pt_specific[key] = (void *) value; self->pt_havespecific = 1; return 0; } void* pthread_getspecific(pthread_key_t key) { pthread_t self; self = pthread__self(); return (self->pt_specific[key]); } ocal
AgeCommit message (Collapse)Author
2016-01-26Put the kernelside rump kernel headers into <rump-sys> instead ofpooka
sprinkling them around the faction directories. Avoids having to add a CPPFLAGS (or several) to pretty much every component Makefile. Leave compat headers around in the old locations. The commit changes some autogenerated files, but I'll fix the generators shortly and regen.
2015-10-19Add a COMMENT describing what each component roughly does.pooka
"make describe" prints the comment. Requested/inspired by Vincent Schwarzer on rumpkernel-users
2014-12-02Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,pooka
with the default provided by Makefile.rump (they're all 0.0 anyway)
2014-08-22Nuke the DOMAINADD() macro and just call domain_attach(), now that thingspooka
work correctly that way.
2014-03-13rename component.c -> local_component.cpooka
2010-03-01Introduce RUMP_COMPONENT. It behaves mostly like a simplifiedpooka
module which is linked into the kernel and cannot be unloaded. The main purpose is to get the proper constructors run and create any /dev nodes necessary for said component. Once more of the kernel (e.g. networking stack and device drivers) are converted to MODULE and devfs pops up from somewhere, rump components can be retired.
2010-02-16Globally define -Wno-pointer-sign, as it has become a pointlesspooka
exercise of "add it to every Makefile individually". XXX: should autosynchronize with the rest of the kernel buildflags in sys/conf/Makefile.kern.inc.
2009-12-12Use linker script to make __start/stop_link_set_modules be presentpooka
in libs built with binutils >=2.19. This is a less error-prone method than the previous where components had to be tagged in the Makefile as modules (and if they weren't, things broke. and vice versa).
2009-09-13binutils 2.19 has changed the old behaviour of defining __start_SECTNAMEpooka
for orphaned sections to using PROVIDE. What this means is that unless a rump component internally references that symbol, it will not be included in the component shared library, and hence cannot be referenced when the component is loaded. Add a workaround which works both with 2.16 and 2.19: force a reference to the __start symbol internally and hence retain it in the resulting library.
2009-05-28Use a bunch of weak symbols to determine which network componentspooka
are present. This works in userspace as opposed relying in link sets, which fail miserably. Later, when the networking stack becomes modularized, we can move to a dynamic scheme like with file systems. Also, this change allows us to do proper autoconfig, namely attach the loopback interface iff it is present.
2009-02-08Add a PF_LOCAL rump kernel component.pooka