diff --git a/TODO b/TODO index ed09fbc596..0965b445f9 100644 --- a/TODO +++ b/TODO @@ -177,9 +177,9 @@ o Task/Scheduler (sched/) Description: In NuttX, the errno value is unique for each thread. But for bug-for-bug compatibility, the same errno should be shared by the task and each thread that it creates. It is *very* easy - to make this change: Just move the pterrno field from - struct tcb_s to struct task_group_s. However, I am still not - sure if this should be done or not. + to make this change: Just move the tls_errno field from + struct tls_info_s to struct task_group_s. However, I am still + not sure if this should be done or not. NOTE: glibc behaves this way unless __thread is defined then, in that case, it behaves like NuttX (using TLS to save the thread local errno). diff --git a/arch/arm/src/arm/arm_sigdeliver.c b/arch/arm/src/arm/arm_sigdeliver.c index 6d50b06dc8..af9d47e25c 100644 --- a/arch/arm/src/arm/arm_sigdeliver.c +++ b/arch/arm/src/arm/arm_sigdeliver.c @@ -1,36 +1,20 @@ /**************************************************************************** * arch/arm/src/arm/arm_sigdeliver.c * - * Copyright (C) 2007-2010, 2015, 2018-2019 Gregory Nutt. All rights - * reserved. - * Author: Gregory Nutt + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * http://www.apache.org/licenses/LICENSE-2.0 * - * 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. Neither the name NuttX 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 COPYRIGHT HOLDERS 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 - * COPYRIGHT OWNER 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. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. * ****************************************************************************/ @@ -77,7 +61,7 @@ void arm_sigdeliver(void) * EINTR). */ - int saved_errno = rtcb->pterrno; + int saved_errno = get_errno(); board_autoled_on(LED_SIGNAL); @@ -108,7 +92,7 @@ void arm_sigdeliver(void) sinfo("Resuming\n"); up_irq_save(); - rtcb->pterrno = saved_errno; + set_errno(saved_errno); /* Modify the saved return state with the actual saved values in the * TCB. This depends on the fact that nested signal handling is diff --git a/arch/arm/src/armv6-m/arm_sigdeliver.c b/arch/arm/src/armv6-m/arm_sigdeliver.c index 0d010ea460..4fc1fc5f3f 100644 --- a/arch/arm/src/armv6-m/arm_sigdeliver.c +++ b/arch/arm/src/armv6-m/arm_sigdeliver.c @@ -81,7 +81,7 @@ void arm_sigdeliver(void) * EINTR). */ - int saved_errno = rtcb->pterrno; + int saved_errno = get_errno(); board_autoled_on(LED_SIGNAL); @@ -112,7 +112,7 @@ void arm_sigdeliver(void) sinfo("Resuming\n"); up_irq_save(); - rtcb->pterrno = saved_errno; + set_errno(saved_errno); /* Modify the saved return state with the actual saved values in the * TCB. This depends on the fact that nested signal handling is diff --git a/arch/arm/src/armv7-a/arm_sigdeliver.c b/arch/arm/src/armv7-a/arm_sigdeliver.c index b0c240ed72..8ceef66fd0 100644 --- a/arch/arm/src/armv7-a/arm_sigdeliver.c +++ b/arch/arm/src/armv7-a/arm_sigdeliver.c @@ -1,36 +1,20 @@ /**************************************************************************** * arch/arm/src/armv7-a/arm_sigdeliver.c * - * Copyright (C) 2013, 2015-2016, 2018-2019 Gregory Nutt. All rights - * reserved. - * Author: Gregory Nutt + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * http://www.apache.org/licenses/LICENSE-2.0 * - * 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. Neither the name NuttX 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 COPYRIGHT HOLDERS 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 - * COPYRIGHT OWNER 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. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. * ****************************************************************************/ @@ -77,7 +61,7 @@ void arm_sigdeliver(void) * EINTR). */ - int saved_errno = rtcb->pterrno; + int saved_errno = get_errno(); #ifdef CONFIG_SMP /* In the SMP case, we must terminate the critical section while the signal @@ -159,7 +143,7 @@ void arm_sigdeliver(void) /* Restore the saved errno value */ - rtcb->pterrno = saved_errno; + set_errno(saved_errno); /* Modify the saved return state with the actual saved values in the * TCB. This depends on the fact that nested signal handling is diff --git a/arch/arm/src/armv7-m/arm_sigdeliver.c b/arch/arm/src/armv7-m/arm_sigdeliver.c index 3fae5e80dc..d62743dae5 100644 --- a/arch/arm/src/armv7-m/arm_sigdeliver.c +++ b/arch/arm/src/armv7-m/arm_sigdeliver.c @@ -61,7 +61,7 @@ void arm_sigdeliver(void) * EINTR). */ - int saved_errno = rtcb->pterrno; + int saved_errno = get_errno(); #ifdef CONFIG_SMP /* In the SMP case, we must terminate the critical section while the signal @@ -147,7 +147,7 @@ void arm_sigdeliver(void) /* Restore the saved errno value */ - rtcb->pterrno = saved_errno; + set_errno(saved_errno); /* Modify the saved return state with the actual saved values in the * TCB. This depends on the fact that nested signal handling is diff --git a/arch/arm/src/armv7-r/arm_sigdeliver.c b/arch/arm/src/armv7-r/arm_sigdeliver.c index 46ef7c6f35..e361ca3cef 100644 --- a/arch/arm/src/armv7-r/arm_sigdeliver.c +++ b/arch/arm/src/armv7-r/arm_sigdeliver.c @@ -1,35 +1,20 @@ /**************************************************************************** * arch/arm/src/armv7-r/arm_sigdeliver.c * - * Copyright (C) 2015, 2018-2019 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * http://www.apache.org/licenses/LICENSE-2.0 * - * 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. Neither the name NuttX 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 COPYRIGHT HOLDERS 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 - * COPYRIGHT OWNER 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. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. * ****************************************************************************/ @@ -76,7 +61,7 @@ void arm_sigdeliver(void) * EINTR). */ - int saved_errno = rtcb->pterrno; + int saved_errno = get_errno(); board_autoled_on(LED_SIGNAL); @@ -107,7 +92,7 @@ void arm_sigdeliver(void) sinfo("Resuming\n"); up_irq_save(); - rtcb->pterrno = saved_errno; + set_errno(saved_errno); /* Modify the saved return state with the actual saved values in the * TCB. This depends on the fact that nested signal handling is diff --git a/arch/arm/src/armv8-m/arm_sigdeliver.c b/arch/arm/src/armv8-m/arm_sigdeliver.c index d0a764fec4..88b7f71712 100755 --- a/arch/arm/src/armv8-m/arm_sigdeliver.c +++ b/arch/arm/src/armv8-m/arm_sigdeliver.c @@ -61,7 +61,7 @@ void arm_sigdeliver(void) * EINTR). */ - int saved_errno = rtcb->pterrno; + int saved_errno = get_errno(); #ifdef CONFIG_SMP /* In the SMP case, we must terminate the critical section while the signal @@ -147,7 +147,7 @@ void arm_sigdeliver(void) /* Restore the saved errno value */ - rtcb->pterrno = saved_errno; + set_errno(saved_errno); /* Modify the saved return state with the actual saved values in the * TCB. This depends on the fact that nested signal handling is diff --git a/arch/avr/src/avr/up_sigdeliver.c b/arch/avr/src/avr/up_sigdeliver.c index 9a14f11c1a..713bbb52d6 100644 --- a/arch/avr/src/avr/up_sigdeliver.c +++ b/arch/avr/src/avr/up_sigdeliver.c @@ -1,35 +1,20 @@ /**************************************************************************** * arch/avr/src/avr/up_sigdeliver.c * - * Copyright (C) 2011, 2015, 2018-2019 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * http://www.apache.org/licenses/LICENSE-2.0 * - * 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. Neither the name NuttX 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 COPYRIGHT HOLDERS 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 - * COPYRIGHT OWNER 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. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. * ****************************************************************************/ @@ -72,10 +57,11 @@ void up_sigdeliver(void) uint8_t regs[XCPTCONTEXT_REGS]; /* Save the errno. This must be preserved throughout the signal handling - * so that the user code final gets the correct errno value (probably EINTR). + * so that the user code final gets the correct errno value (probably + * EINTR). */ - int saved_errno = rtcb->pterrno; + int saved_errno = get_errno(); board_autoled_on(LED_SIGNAL); @@ -106,7 +92,7 @@ void up_sigdeliver(void) sinfo("Resuming\n"); up_irq_save(); - rtcb->pterrno = saved_errno; + set_errno(saved_errno); /* Modify the saved return state with the actual saved values in the * TCB. This depends on the fact that nested signal handling is @@ -130,17 +116,18 @@ void up_sigdeliver(void) * unusual case that must be handled by up_fullcontextresore. This case is * unusual in two ways: * - * 1. It is not a context switch between threads. Rather, up_fullcontextrestore - * must behave more it more like a longjmp within the same task, using - * he same stack. + * 1. It is not a context switch between threads. Rather, + * up_fullcontextrestore must behave more it more like a longjmp + * within the same task, using the same stack. * 2. In this case, up_fullcontextrestore is called with r12 pointing to * a register save area on the stack to be destroyed. This is * dangerous because there is the very real possibility that the new - * stack pointer might overlap with the register save area and hat stack - * usage in up_fullcontextrestore might corrupt the register save data - * before the state is restored. At present, there does not appear to - * be any stack overlap problems. If there were, then adding 3 words - * to the size of register save structure size will protect its contents. + * stack pointer might overlap with the register save area and that + * stack usage in up_fullcontextrestore might corrupt the register + * save data before the state is restored. At present, there does + * not appear to be any stack overlap problems. If there were, then + * adding 3 words to the size of register save structure size will + * protect its contents. */ board_autoled_off(LED_SIGNAL); diff --git a/arch/avr/src/avr32/up_sigdeliver.c b/arch/avr/src/avr32/up_sigdeliver.c index b024e3e7fc..f6681dbded 100644 --- a/arch/avr/src/avr32/up_sigdeliver.c +++ b/arch/avr/src/avr32/up_sigdeliver.c @@ -1,35 +1,20 @@ /**************************************************************************** * arch/avr/src/avr32/up_sigdeliver.c * - * Copyright (C) 2010, 2015, 2018-2019 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * http://www.apache.org/licenses/LICENSE-2.0 * - * 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. Neither the name NuttX 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 COPYRIGHT HOLDERS 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 - * COPYRIGHT OWNER 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. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. * ****************************************************************************/ @@ -70,16 +55,17 @@ void up_sigdeliver(void) { struct tcb_s *rtcb = this_task(); #if 0 - uint32_t regs[XCPTCONTEXT_REGS+3]; /* Why +3? See below */ + uint32_t regs[XCPTCONTEXT_REGS + 3]; /* Why +3? See below */ #else uint32_t regs[XCPTCONTEXT_REGS]; #endif /* Save the errno. This must be preserved throughout the signal handling - * so that the user code final gets the correct errno value (probably EINTR). + * so that the user code final gets the correct errno value (probably + * EINTR). */ - int saved_errno = rtcb->pterrno; + int saved_errno = get_errno(); board_autoled_on(LED_SIGNAL); @@ -110,7 +96,7 @@ void up_sigdeliver(void) sinfo("Resuming\n"); up_irq_save(); - rtcb->pterrno = saved_errno; + set_errno(saved_errno); /* Modify the saved return state with the actual saved values in the * TCB. This depends on the fact that nested signal handling is @@ -130,17 +116,18 @@ void up_sigdeliver(void) * unusual case that must be handled by up_fullcontextresore. This case is * unusual in two ways: * - * 1. It is not a context switch between threads. Rather, up_fullcontextrestore - * must behave more it more like a longjmp within the same task, using - * he same stack. + * 1. It is not a context switch between threads. Rather, + * up_fullcontextrestore must behave more it more like a longjmp + * within the same task, using the same stack. * 2. In this case, up_fullcontextrestore is called with r12 pointing to * a register save area on the stack to be destroyed. This is * dangerous because there is the very real possibility that the new - * stack pointer might overlap with the register save area and hat stack - * usage in up_fullcontextrestore might corrupt the register save data - * before the state is restored. At present, there does not appear to - * be any stack overlap problems. If there were, then adding 3 words - * to the size of register save structure size will protect its contents. + * stack pointer might overlap with the register save area and that + * stack usage in up_fullcontextrestore might corrupt the register + * save data before the state is restored. At present, there does + * not appear to be any stack overlap problems. If there were, then + * adding 3 words to the size of register save structure size will + * protect its contents. */ board_autoled_off(LED_SIGNAL); diff --git a/arch/mips/src/mips32/mips_sigdeliver.c b/arch/mips/src/mips32/mips_sigdeliver.c index 12437367d4..ddf74779c6 100644 --- a/arch/mips/src/mips32/mips_sigdeliver.c +++ b/arch/mips/src/mips32/mips_sigdeliver.c @@ -1,35 +1,20 @@ /**************************************************************************** * arch/mips/src/mips32/mips_sigdeliver.c * - * Copyright (C) 2011, 2015, 2018-2019 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * http://www.apache.org/licenses/LICENSE-2.0 * - * 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. Neither the name NuttX 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 COPYRIGHT HOLDERS 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 - * COPYRIGHT OWNER 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. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. * ****************************************************************************/ @@ -77,7 +62,7 @@ void up_sigdeliver(void) * EINTR). */ - int saved_errno = rtcb->pterrno; + int saved_errno = get_errno(); board_autoled_on(LED_SIGNAL); @@ -110,7 +95,7 @@ void up_sigdeliver(void) regs[REG_EPC], regs[REG_STATUS]); up_irq_save(); - rtcb->pterrno = saved_errno; + set_errno(saved_errno); /* Modify the saved return state with the actual saved values in the * TCB. This depends on the fact that nested signal handling is diff --git a/arch/misoc/src/lm32/lm32_sigdeliver.c b/arch/misoc/src/lm32/lm32_sigdeliver.c index f32bdbf2c1..7912a9c254 100644 --- a/arch/misoc/src/lm32/lm32_sigdeliver.c +++ b/arch/misoc/src/lm32/lm32_sigdeliver.c @@ -1,35 +1,20 @@ /**************************************************************************** * arch/misoc/src/lm32/lm32_sigdeliver.c * - * Copyright (C) 2016, 2018-2019 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * http://www.apache.org/licenses/LICENSE-2.0 * - * 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. Neither the name NuttX 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 COPYRIGHT HOLDERS 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 - * COPYRIGHT OWNER 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. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. * ****************************************************************************/ @@ -76,7 +61,7 @@ void lm32_sigdeliver(void) * EINTR). */ - int saved_errno = rtcb->pterrno; + int saved_errno = get_errno(); board_autoled_on(LED_SIGNAL); @@ -105,10 +90,11 @@ void lm32_sigdeliver(void) * errno that is needed by the user logic (it is probably EINTR). */ - sinfo("Resuming EPC: %08x INT_CTX: %08x\n", regs[REG_EPC], regs[REG_INT_CTX]); + sinfo("Resuming EPC: %08x INT_CTX: %08x\n", + regs[REG_EPC], regs[REG_INT_CTX]); up_irq_save(); - rtcb->pterrno = saved_errno; + set_errno(saved_errno); /* Modify the saved return state with the actual saved values in the * TCB. This depends on the fact that nested signal handling is diff --git a/arch/misoc/src/minerva/minerva_sigdeliver.c b/arch/misoc/src/minerva/minerva_sigdeliver.c index 37c68fb8a3..acf8f28a18 100644 --- a/arch/misoc/src/minerva/minerva_sigdeliver.c +++ b/arch/misoc/src/minerva/minerva_sigdeliver.c @@ -1,35 +1,20 @@ /**************************************************************************** * arch/misoc/src/minerva/minerva_sigdeliver.c * - * Copyright (C) 2019 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * http://www.apache.org/licenses/LICENSE-2.0 * - * 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. Neither the name NuttX 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 COPYRIGHT HOLDERS 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 - * COPYRIGHT OWNER 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. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. * ****************************************************************************/ @@ -73,11 +58,12 @@ void minerva_sigdeliver(void) uint32_t regs[XCPTCONTEXT_REGS]; sig_deliver_t sigdeliver; - /* Save the errno. This must be preserved throughout the signal handling so - * that the user code final gets the correct errno value (probably EINTR). + /* Save the errno. This must be preserved throughout the signal handling + * so that the user code final gets the correct errno value (probably + * EINTR). */ - int saved_errno = rtcb->pterrno; + int saved_errno = get_errno(); board_autoled_on(LED_SIGNAL); @@ -111,16 +97,16 @@ void minerva_sigdeliver(void) sigdeliver(rtcb); - /* Output any debug messages BEFORE restoring errno (because they may alter - * errno), then disable interrupts again and restore the original errno that - * is needed by the user logic (it is probably EINTR). + /* Output any debug messages BEFORE restoring errno (because they may + * alter errno), then disable interrupts again and restore the original + * errno that is needed by the user logic (it is probably EINTR). */ sinfo("Resuming EPC: %08x INT_CTX: %08x\n", regs[REG_CSR_MEPC], regs[REG_CSR_MSTATUS]); up_irq_save(); - rtcb->pterrno = saved_errno; + set_errno(saved_errno); /* Then restore the correct state for this thread of execution. */ diff --git a/arch/renesas/src/m16c/m16c_sigdeliver.c b/arch/renesas/src/m16c/m16c_sigdeliver.c index 1616f0bae8..6b2ba26852 100644 --- a/arch/renesas/src/m16c/m16c_sigdeliver.c +++ b/arch/renesas/src/m16c/m16c_sigdeliver.c @@ -1,36 +1,20 @@ /**************************************************************************** * arch/renesas/src/m16c/m16c_sigdeliver.c * - * Copyright (C) 2009-2010, 2015, 2018-2019 Gregory Nutt. All rights - * reserved. - * Author: Gregory Nutt + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * http://www.apache.org/licenses/LICENSE-2.0 * - * 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. Neither the name NuttX 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 COPYRIGHT HOLDERS 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 - * COPYRIGHT OWNER 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. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. * ****************************************************************************/ @@ -76,7 +60,7 @@ void up_sigdeliver(void) * EINTR). */ - int saved_errno = rtcb->pterrno; + int saved_errno = get_errno(); board_autoled_on(LED_SIGNAL); @@ -107,7 +91,7 @@ void up_sigdeliver(void) sinfo("Resuming\n"); up_irq_save(); - rtcb->pterrno = saved_errno; + set_errno(saved_errno); /* Modify the saved return state with the actual saved values in the * TCB. This depends on the fact that nested signal handling is diff --git a/arch/renesas/src/rx65n/rx65n_sigdeliver.c b/arch/renesas/src/rx65n/rx65n_sigdeliver.c index 862f97bb2a..2b288dc72d 100644 --- a/arch/renesas/src/rx65n/rx65n_sigdeliver.c +++ b/arch/renesas/src/rx65n/rx65n_sigdeliver.c @@ -77,7 +77,7 @@ void up_sigdeliver(void) * EINTR). */ - int saved_errno = rtcb->pterrno; + int saved_errno = get_errno(); board_autoled_on(LED_SIGNAL); @@ -119,7 +119,7 @@ void up_sigdeliver(void) sinfo("Resuming\n"); up_irq_save(); - rtcb->pterrno = saved_errno; + set_errno(saved_errno); /* Then restore the correct state for this thread of * execution. diff --git a/arch/renesas/src/sh1/sh1_sigdeliver.c b/arch/renesas/src/sh1/sh1_sigdeliver.c index fdb6483b89..4b5fa6be22 100644 --- a/arch/renesas/src/sh1/sh1_sigdeliver.c +++ b/arch/renesas/src/sh1/sh1_sigdeliver.c @@ -1,36 +1,20 @@ /**************************************************************************** * arch/renesas/src/common/up_sigdeliver.c * - * Copyright (C) 2008-2010, 2015, 2018-2019 Gregory Nutt. All rights - * reserved. - * Author: Gregory Nutt + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * http://www.apache.org/licenses/LICENSE-2.0 * - * 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. Neither the name NuttX 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 COPYRIGHT HOLDERS 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 - * COPYRIGHT OWNER 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. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. * ****************************************************************************/ @@ -76,7 +60,7 @@ void up_sigdeliver(void) * EINTR). */ - int saved_errno = rtcb->pterrno; + int saved_errno = get_errno(); board_autoled_on(LED_SIGNAL); @@ -107,7 +91,7 @@ void up_sigdeliver(void) sinfo("Resuming\n"); up_irq_save(); - rtcb->pterrno = saved_errno; + set_errno(saved_errno); /* Modify the saved return state with the actual saved values in the * TCB. This depends on the fact that nested signal handling is diff --git a/arch/risc-v/src/rv32im/riscv_sigdeliver.c b/arch/risc-v/src/rv32im/riscv_sigdeliver.c index d1276bcacb..c1b7ece650 100644 --- a/arch/risc-v/src/rv32im/riscv_sigdeliver.c +++ b/arch/risc-v/src/rv32im/riscv_sigdeliver.c @@ -82,7 +82,7 @@ void up_sigdeliver(void) * EINTR). */ - int saved_errno = rtcb->pterrno; + int saved_errno = get_errno(); board_autoled_on(LED_SIGNAL); @@ -115,7 +115,7 @@ void up_sigdeliver(void) regs[REG_EPC], regs[REG_INT_CTX]); up_irq_save(); - rtcb->pterrno = saved_errno; + set_errno(saved_errno); /* Modify the saved return state with the actual saved values in the * TCB. This depends on the fact that nested signal handling is diff --git a/arch/risc-v/src/rv64gc/riscv_sigdeliver.c b/arch/risc-v/src/rv64gc/riscv_sigdeliver.c index 073647e293..9f21dcc9aa 100644 --- a/arch/risc-v/src/rv64gc/riscv_sigdeliver.c +++ b/arch/risc-v/src/rv64gc/riscv_sigdeliver.c @@ -82,7 +82,7 @@ void up_sigdeliver(void) * EINTR). */ - int saved_errno = rtcb->pterrno; + int saved_errno = get_errno(); #ifdef CONFIG_SMP /* In the SMP case, we must terminate the critical section while the signal @@ -162,7 +162,7 @@ void up_sigdeliver(void) /* Restore the saved errno value */ - rtcb->pterrno = saved_errno; + set_errno(saved_errno); /* Modify the saved return state with the actual saved values in the * TCB. This depends on the fact that nested signal handling is diff --git a/arch/x86/src/i486/up_sigdeliver.c b/arch/x86/src/i486/up_sigdeliver.c index fb6ad54df3..52e3b5d386 100644 --- a/arch/x86/src/i486/up_sigdeliver.c +++ b/arch/x86/src/i486/up_sigdeliver.c @@ -1,35 +1,20 @@ /**************************************************************************** * arch/x86/src/i486/up_sigdeliver.c * - * Copyright (C) 2011, 2015, 2018-2019 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * http://www.apache.org/licenses/LICENSE-2.0 * - * 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. Neither the name NuttX 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 COPYRIGHT HOLDERS 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 - * COPYRIGHT OWNER 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. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. * ****************************************************************************/ @@ -76,7 +61,7 @@ void up_sigdeliver(void) * EINTR). */ - int saved_errno = rtcb->pterrno; + int saved_errno = get_errno(); board_autoled_on(LED_SIGNAL); @@ -107,7 +92,7 @@ void up_sigdeliver(void) sinfo("Resuming\n"); up_irq_save(); - rtcb->pterrno = saved_errno; + set_errno(saved_errno); /* Modify the saved return state with the actual saved values in the * TCB. This depends on the fact that nested signal handling is diff --git a/arch/x86_64/src/intel64/up_sigdeliver.c b/arch/x86_64/src/intel64/up_sigdeliver.c index dd7317810f..4275ce31f0 100644 --- a/arch/x86_64/src/intel64/up_sigdeliver.c +++ b/arch/x86_64/src/intel64/up_sigdeliver.c @@ -81,7 +81,7 @@ void up_sigdeliver(void) * EINTR). */ - int saved_errno = rtcb->pterrno; + int saved_errno = get_errno(); /* Save the real return state on the stack ASAP before any chance we went * sleeping and break the register profile. We entered this function with @@ -122,7 +122,7 @@ void up_sigdeliver(void) sinfo("Resuming\n"); (void)up_irq_save(); - rtcb->pterrno = saved_errno; + set_errno(saved_errno); /* Modify the saved return state with the actual saved values in the * TCB. This depends on the fact that nested signal handling is diff --git a/arch/xtensa/src/common/xtensa_sigdeliver.c b/arch/xtensa/src/common/xtensa_sigdeliver.c index 6a00b96eab..3bc3998438 100644 --- a/arch/xtensa/src/common/xtensa_sigdeliver.c +++ b/arch/xtensa/src/common/xtensa_sigdeliver.c @@ -1,35 +1,20 @@ /**************************************************************************** * arch/xtensa/src/common/xtensa_sigdeliver.c * - * Copyright (C) 2016, 2018-2019 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * http://www.apache.org/licenses/LICENSE-2.0 * - * 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. Neither the name NuttX 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 COPYRIGHT HOLDERS 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 - * COPYRIGHT OWNER 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. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. * ****************************************************************************/ @@ -75,7 +60,7 @@ void xtensa_sig_deliver(void) * EINTR). */ - int saved_errno = rtcb->pterrno; + int saved_errno = get_errno(); #ifdef CONFIG_SMP /* In the SMP case, we must terminate the critical section while the signal @@ -154,7 +139,7 @@ void xtensa_sig_deliver(void) /* Restore the saved errno value */ - rtcb->pterrno = saved_errno; + set_errno(saved_errno); /* Modify the saved return state with the actual saved values in the * TCB. This depends on the fact that nested signal handling is diff --git a/arch/z16/src/common/z16_sigdeliver.c b/arch/z16/src/common/z16_sigdeliver.c index 4ca825470f..2a91f25897 100644 --- a/arch/z16/src/common/z16_sigdeliver.c +++ b/arch/z16/src/common/z16_sigdeliver.c @@ -61,7 +61,7 @@ void z16_sigdeliver(void) * EINTR). */ - int saved_errno = rtcb->pterrno; + int saved_errno = get_errno(); board_autoled_on(LED_SIGNAL); @@ -92,7 +92,7 @@ void z16_sigdeliver(void) sinfo("Resuming\n"); up_irq_save(); - rtcb->pterrno = saved_errno; + set_errno(saved_errno); /* Modify the saved return state with the actual saved values in the * TCB. This depends on the fact that nested signal handling is diff --git a/arch/z80/src/ez80/ez80_sigdeliver.c b/arch/z80/src/ez80/ez80_sigdeliver.c index dc553ca698..4f203a15e8 100644 --- a/arch/z80/src/ez80/ez80_sigdeliver.c +++ b/arch/z80/src/ez80/ez80_sigdeliver.c @@ -62,7 +62,7 @@ void z80_sigdeliver(void) * EINTR). */ - int saved_errno = rtcb->pterrno; + int saved_errno = get_errno(); board_autoled_on(LED_SIGNAL); @@ -93,7 +93,7 @@ void z80_sigdeliver(void) sinfo("Resuming\n"); up_irq_save(); - rtcb->pterrno = saved_errno; + set_errno(saved_errno); /* Modify the saved return state with the actual saved values in the * TCB. This depends on the fact that nested signal handling is diff --git a/arch/z80/src/z180/z180_sigdeliver.c b/arch/z80/src/z180/z180_sigdeliver.c index 678d8c6e33..529d698d64 100644 --- a/arch/z80/src/z180/z180_sigdeliver.c +++ b/arch/z80/src/z180/z180_sigdeliver.c @@ -1,35 +1,20 @@ /**************************************************************************** * arch/z80/src/z180/z180_sigdeliver.c * - * Copyright (C) 2012, 2015, 2018-2019 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * http://www.apache.org/licenses/LICENSE-2.0 * - * 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. Neither the name NuttX 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 COPYRIGHT HOLDERS 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 - * COPYRIGHT OWNER 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. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. * ****************************************************************************/ @@ -74,7 +59,7 @@ void z80_sigdeliver(void) * EINTR). */ - int saved_errno = rtcb->pterrno; + int saved_errno = get_errno(); board_autoled_on(LED_SIGNAL); @@ -105,7 +90,7 @@ void z80_sigdeliver(void) sinfo("Resuming\n"); up_irq_save(); - rtcb->pterrno = saved_errno; + set_errno(saved_errno); /* Modify the saved return state with the actual saved values in the * TCB. This depends on the fact that nested signal handling is diff --git a/arch/z80/src/z8/z8_sigdeliver.c b/arch/z80/src/z8/z8_sigdeliver.c index 9e40e2c394..1b01f24931 100644 --- a/arch/z80/src/z8/z8_sigdeliver.c +++ b/arch/z80/src/z8/z8_sigdeliver.c @@ -1,36 +1,20 @@ /**************************************************************************** * arch/z80/src/z8/z8_sigdeliver.c * - * Copyright (C) 2008-2010, 2015, 2018-2019 Gregory Nutt. All rights - * reserved. - * Author: Gregory Nutt + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * http://www.apache.org/licenses/LICENSE-2.0 * - * 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. Neither the name NuttX 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 COPYRIGHT HOLDERS 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 - * COPYRIGHT OWNER 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. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. * ****************************************************************************/ @@ -94,7 +78,7 @@ void z80_sigdeliver(void) * EINTR). */ - int saved_errno = rtcb->pterrno; + int saved_errno = get_errno(); board_autoled_on(LED_SIGNAL); @@ -125,7 +109,7 @@ void z80_sigdeliver(void) sinfo("Resuming\n"); up_irq_save(); - rtcb->pterrno = saved_errno; + set_errno(saved_errno); /* Modify the saved return state with the actual saved values in the * TCB. This depends on the fact that nested signal handling is diff --git a/arch/z80/src/z80/z80_sigdeliver.c b/arch/z80/src/z80/z80_sigdeliver.c index 3be2b5388b..d3574c3c05 100644 --- a/arch/z80/src/z80/z80_sigdeliver.c +++ b/arch/z80/src/z80/z80_sigdeliver.c @@ -1,36 +1,20 @@ /**************************************************************************** * arch/z80/src/z80/z80_sigdeliver.c * - * Copyright (C) 2007-2010, 2015, 2018-2019 Gregory Nutt. All rights - * reserved. - * Author: Gregory Nutt + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * http://www.apache.org/licenses/LICENSE-2.0 * - * 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. Neither the name NuttX 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 COPYRIGHT HOLDERS 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 - * COPYRIGHT OWNER 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. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. * ****************************************************************************/ @@ -75,7 +59,7 @@ void z80_sigdeliver(void) * EINTR). */ - int saved_errno = rtcb->pterrno; + int saved_errno = get_errno(); board_autoled_on(LED_SIGNAL); @@ -106,7 +90,7 @@ void z80_sigdeliver(void) sinfo("Resuming\n"); up_irq_save(); - rtcb->pterrno = saved_errno; + set_errno(saved_errno); /* Modify the saved return state with the actual saved values in the * TCB. This depends on the fact that nested signal handling is diff --git a/include/errno.h b/include/errno.h index 76a1bc4d6c..9caf44d60a 100644 --- a/include/errno.h +++ b/include/errno.h @@ -1,35 +1,20 @@ /**************************************************************************** * include/errno.h * - * Copyright (C) 2007-2009, 2011 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * http://www.apache.org/licenses/LICENSE-2.0 * - * 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. Neither the name NuttX 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 COPYRIGHT HOLDERS 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 - * COPYRIGHT OWNER 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. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. * ****************************************************************************/ @@ -46,74 +31,21 @@ * Pre-processor Definitions ****************************************************************************/ -/* How can we access the errno variable? */ - -#ifdef CONFIG_BUILD_FLAT - /* Flat build */ - -# if defined(CONFIG_LIB_SYSCALL) && !defined(__KERNEL__) - /* We still might be using system calls in user code. If so, then - * user code will have no direct access to the errno variable. - */ - -# undef __DIRECT_ERRNO_ACCESS - -# else - /* Flat build with no system calls OR internal kernel logic... There - * is direct access. - */ - -# define __DIRECT_ERRNO_ACCESS 1 -# endif - -#else -# if defined(__KERNEL__) - /* Kernel portion of protected/kernel build. Kernel code has direct - * access - */ - -# define __DIRECT_ERRNO_ACCESS 1 - -# else - /* User portion of protected/kernel build. Application code has only - * indirect access - */ - -# undef __DIRECT_ERRNO_ACCESS -# endif -#endif - -/* Convenience/compatibility definition. - * - * For a flat, all kernel-mode build, the error can be read and written - * from all code using a simple pointer. +/* Convenience/compatibility definition. If the errno is accessed from the + * internal OS code, then the OS code should use the set_errno() and + * get_errno(). Currently, those are just placeholders but would be needed + * in the KERNEL mode build in order to instantiate the process address + * environment as necessary to access the TLS-based errno variable. */ -#ifdef __DIRECT_ERRNO_ACCESS - -# define errno *__errno() -# define set_errno(e) do { errno = (int)(e); } while (0) -# define get_errno() errno - -#else - -/* We doing separate user-/kernel-mode builds, then the errno has to be - * a little differently. In kernel-mode, the TCB errno value can still be - * read and written using a pointer from code executing within the - * kernel. - * - * But in user-mode, the errno can only be read using the name 'errno'. - * The non-standard API set_errno() must explicitly be used from user- - * mode code in order to set the errno value. - * - * The same is true of the case where we have syscalls enabled but this - * is not a kernel build, then we really have no option but to use the - * set_errno() accessor function explicitly, even from OS logic! - */ - -# define errno get_errno() - -#endif /* __DIRECT_ERRNO_ACCESS */ +#define errno *__errno() +#define set_errno(e) \ + do \ + { \ + errno = (int)(e); \ + } \ + while (0) +#define get_errno() errno /* Definitions of error numbers and the string that would be * returned by strerror(). @@ -398,21 +330,10 @@ extern "C" #define EXTERN extern #endif -/* Return a pointer to the thread specific errno. NOTE: When doing a - * kernel-/user-mode build, this function can only be used within the - * kernel-mode space. - * - * In the user-mode space, set_errno() and get_errno() are always available, - * either as macros or via syscalls. - */ +/* Return a pointer to the thread specific errno. */ FAR int *__errno(void); -#ifndef __DIRECT_ERRNO_ACCESS -void set_errno(int errcode); -int get_errno(void); -#endif - #undef EXTERN #if defined(__cplusplus) } diff --git a/include/nuttx/sched.h b/include/nuttx/sched.h index cc63e7cb3c..37a40f8167 100644 --- a/include/nuttx/sched.h +++ b/include/nuttx/sched.h @@ -648,6 +648,7 @@ struct tcb_s #ifdef CONFIG_CANCELLATION_POINTS int16_t cpcount; /* Nested cancellation point count */ #endif + int16_t errcode; /* Used to pass error information */ #if CONFIG_RR_INTERVAL > 0 || defined(CONFIG_SCHED_SPORADIC) int32_t timeslice; /* RR timeslice OR Sporadic budget */ @@ -708,10 +709,6 @@ struct tcb_s uint32_t crit_max; /* Max time in critical section */ #endif - /* Library related fields *****************************************************/ - - int pterrno; /* Current per-thread errno */ - /* State save areas ***********************************************************/ /* The form and content of these fields are platform-specific. */ diff --git a/include/nuttx/tls.h b/include/nuttx/tls.h index fb085baeb5..7323a67a1a 100644 --- a/include/nuttx/tls.h +++ b/include/nuttx/tls.h @@ -43,13 +43,7 @@ #ifndef CONFIG_TLS_NELEM # warning CONFIG_TLS_NELEM is not defined -# define CONFIG_TLS_NELEM 1 -#endif - -#if CONFIG_TLS_NELEM < 1 -# error CONFIG_TLS_NELEM must be at least one -# undef CONFIG_TLS_NELEM -# define CONFIG_TLS_NELEM 1 +# define CONFIG_TLS_NELEM 0 #endif /* TLS Definitions **********************************************************/ @@ -81,7 +75,10 @@ struct tls_info_s { +#if CONFIG_TLS_NELEM > 0 uintptr_t tl_elem[CONFIG_TLS_NELEM]; /* TLS elements */ +#endif + int tl_errno; /* Per-thread error number */ }; /**************************************************************************** diff --git a/include/sys/syscall_lookup.h b/include/sys/syscall_lookup.h index 851cae200b..13ec91927e 100644 --- a/include/sys/syscall_lookup.h +++ b/include/sys/syscall_lookup.h @@ -26,7 +26,6 @@ SYSCALL_LOOKUP1(_exit, 1) SYSCALL_LOOKUP(exit, 1) -SYSCALL_LOOKUP(get_errno, 0) SYSCALL_LOOKUP(getpid, 0) SYSCALL_LOOKUP(sched_getparam, 2) @@ -46,7 +45,6 @@ SYSCALL_LOOKUP(sched_get_stackinfo, 2) SYSCALL_LOOKUP(sched_setaffinity, 3) #endif -SYSCALL_LOOKUP(set_errno, 1) SYSCALL_LOOKUP(uname, 1) SYSCALL_LOOKUP(sethostname, 2) diff --git a/libs/libc/Makefile b/libs/libc/Makefile index 56a677b97d..ee26f12cad 100644 --- a/libs/libc/Makefile +++ b/libs/libc/Makefile @@ -1,35 +1,20 @@ ############################################################################ # libs/libc/Makefile # -# Copyright (C) 2007-2014, 2016-2017, 2019 Gregory Nutt. All rights reserved. -# Author: Gregory Nutt +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. The +# ASF licenses this file to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance with the +# License. You may obtain a copy of the License at # -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: +# http://www.apache.org/licenses/LICENSE-2.0 # -# 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. Neither the name NuttX 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 COPYRIGHT HOLDERS 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 -# COPYRIGHT OWNER 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. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. # ########################################################################### @@ -49,6 +34,7 @@ include builtin/Make.defs include dirent/Make.defs include dlfcn/Make.defs include endian/Make.defs +include errno/Make.defs include fixedmath/Make.defs include grp/Make.defs include hex2bin/Make.defs diff --git a/libs/libc/README.txt b/libs/libc/README.txt index 5c43c90b2f..e7c12d90ce 100644 --- a/libs/libc/README.txt +++ b/libs/libc/README.txt @@ -32,6 +32,7 @@ we have: builtin - Support for builtin applications. Used by nuttx/binfmt and NSH. dlfcn - dlfcn.h endian - endian.h + errno - errno.h hex2bin - hex2bin.h libgen - libgen.h locale - locale.h diff --git a/libs/libc/errno/Make.defs b/libs/libc/errno/Make.defs new file mode 100644 index 0000000000..405fe2c1c7 --- /dev/null +++ b/libs/libc/errno/Make.defs @@ -0,0 +1,26 @@ +############################################################################ +# libs/libc/errno/Make.defs +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. The +# ASF licenses this file to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance with the +# License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +############################################################################ + +CSRCS += lib_errno.c + +# Include errno build support + +DEPPATH += --dep-path errno +VPATH += :errno diff --git a/libs/libc/errno/lib_errno.c b/libs/libc/errno/lib_errno.c new file mode 100644 index 0000000000..27f67dd0ba --- /dev/null +++ b/libs/libc/errno/lib_errno.c @@ -0,0 +1,61 @@ +/**************************************************************************** + * sched/errno/lib_errno.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include + +#include + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: __errno + * + * Description: + * Return a pointer to the thread specific errno. + * + * Input Parameters: + * None + * + * Returned Value: + * A pointer to the per-thread errno variable. + * + * Assumptions: + * + ****************************************************************************/ + +FAR int *__errno(void) +{ + /* Get the TLS tls_info_s structure instance for this thread */ + + FAR struct tls_info_s *tlsinfo = up_tls_info(); + + /* And return the return refernce to the error number */ + + return &tlsinfo->tl_errno; +} diff --git a/libs/libc/tls/Kconfig b/libs/libc/tls/Kconfig index 40a51801aa..b14abc4341 100644 --- a/libs/libc/tls/Kconfig +++ b/libs/libc/tls/Kconfig @@ -45,9 +45,12 @@ config TLS_LOG2_MAXSTACK config TLS_NELEM int "Number of TLS elements" - default 1 + default 0 ---help--- The number of unique TLS elements. These can be accessed with the user library functions tls_get_element() and tls_set_element(). + NOTE that the special value of CONFIG_TLS_NELEM disables these + TLS interfaces. + endmenu # Thread Local Storage (TLS) diff --git a/libs/libc/tls/Make.defs b/libs/libc/tls/Make.defs index 934bcfaf6c..01fd70edcb 100644 --- a/libs/libc/tls/Make.defs +++ b/libs/libc/tls/Make.defs @@ -19,8 +19,8 @@ ############################################################################ ifneq ($(CONFIG_TLS_NELEM),0) - CSRCS += tls_setelem.c tls_getelem.c +endif ifneq ($(CONFIG_TLS_ALIGNED),y) CSRCS += tls_getinfo.c @@ -31,4 +31,3 @@ endif DEPPATH += --dep-path tls VPATH += :tls -endif diff --git a/libs/libc/tls/tls_getinfo.c b/libs/libc/tls/tls_getinfo.c index 72f1833a5b..79a90705b2 100644 --- a/libs/libc/tls/tls_getinfo.c +++ b/libs/libc/tls/tls_getinfo.c @@ -60,8 +60,6 @@ FAR struct tls_info_s *tls_get_info(void) struct stackinfo_s stackinfo; int ret; - DEBUGASSERT(!up_interrupt_context()); - ret = sched_get_stackinfo(0, &stackinfo); if (ret >= 0) { diff --git a/sched/Makefile b/sched/Makefile index 63d1c519ed..f3543ddd94 100644 --- a/sched/Makefile +++ b/sched/Makefile @@ -1,35 +1,20 @@ ############################################################################ # sched/Makefile # -# Copyright (C) 2007-2014, 2016 Gregory Nutt. All rights reserved. -# Author: Gregory Nutt +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. The +# ASF licenses this file to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance with the +# License. You may obtain a copy of the License at # -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: +# http://www.apache.org/licenses/LICENSE-2.0 # -# 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. Neither the name NuttX 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 COPYRIGHT HOLDERS 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 -# COPYRIGHT OWNER 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. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. # ############################################################################ @@ -42,7 +27,6 @@ VPATH = DEPPATH = --dep-path . include clock/Make.defs -include errno/Make.defs include environ/Make.defs include group/Make.defs include init/Make.defs diff --git a/sched/errno/Make.defs b/sched/errno/Make.defs deleted file mode 100644 index 6c51ee2fef..0000000000 --- a/sched/errno/Make.defs +++ /dev/null @@ -1,45 +0,0 @@ -############################################################################ -# sched/errno/Make.defs -# -# Copyright (C) 2014 Gregory Nutt. All rights reserved. -# Author: Gregory Nutt -# -# 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. Neither the name NuttX 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 COPYRIGHT HOLDERS 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 -# COPYRIGHT OWNER 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. -# -############################################################################ - -CSRCS += errno_errno.c - -ifeq ($(CONFIG_LIB_SYSCALL),y) -CSRCS += errno_get.c errno_set.c -endif - -# Include errno build support - -DEPPATH += --dep-path errno -VPATH += :errno diff --git a/sched/errno/errno_errno.c b/sched/errno/errno_errno.c deleted file mode 100644 index a262b5bfaf..0000000000 --- a/sched/errno/errno_errno.c +++ /dev/null @@ -1,118 +0,0 @@ -/**************************************************************************** - * sched/errno/errno_errno.c - * - * Copyright (C) 2007, 2008, 2011, 2014 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt - * - * 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. Neither the name NuttX 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 COPYRIGHT HOLDERS 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 - * COPYRIGHT OWNER 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. - * - ****************************************************************************/ - -/**************************************************************************** - * Included Files - ****************************************************************************/ - -#include -#include -#include -#include -#include "sched/sched.h" - -/**************************************************************************** - * Private Data - ****************************************************************************/ - -/* This is a 'dummy' errno value to use in context where there is no valid - * errno location to use. For example, when running from an interrupt handler - * or early in initialization when task structures have not yet been - * initialized. - */ - -static int g_irqerrno; - -/**************************************************************************** - * Public Functions - ****************************************************************************/ - -/**************************************************************************** - * Name: __errno - * - * Description: - * Return a pointer to the thread specific errno. - * - * Input Parameters: - * None - * - * Returned Value: - * A pointer to the per-thread errno variable. - * - * Assumptions: - * - ****************************************************************************/ - -FAR int *__errno(void) -{ - /* Check if this function was called from an interrupt handler. In that - * case, we have to do things a little differently to prevent the interrupt - * handler from modifying the tasks errno value. - */ - - if (!up_interrupt_context()) - { - /* We were called from the normal tasking context. Verify that the - * task at the head of the ready-to-run list is actually running. It - * may not be running during very brief times during context switching - * logic (see, for example, task_exit.c). - * - * There is also a corner case early in the initialization sequence: - * The ready to run list may not yet be initialized and this_task() - * may be NULL. - */ - - FAR struct tcb_s *rtcb = this_task(); - if (rtcb && rtcb->task_state == TSTATE_TASK_RUNNING) - { - /* Yes.. the task is running normally. Return a reference to the - * thread-private errno in the TCB of the running task. - */ - - return &rtcb->pterrno; - } - } - - /* We were called either from (1) an interrupt handler or (2) from normally - * code but in an unhealthy state. In either event, do not permit access to - * the errno in the TCB of the task at the head of the ready-to-run list. - * Instead, use a separate errno just for interrupt handlers. Of course, - * this would have to change if we ever wanted to support nested interrupts - * or if we really cared about the stability of the errno during those - * "unhealthy states." - */ - - return &g_irqerrno; -} diff --git a/sched/errno/errno_get.c b/sched/errno/errno_get.c deleted file mode 100644 index 2d91497e3d..0000000000 --- a/sched/errno/errno_get.c +++ /dev/null @@ -1,76 +0,0 @@ -/**************************************************************************** - * sched/errno/errno_get.c - * - * Copyright (C) 2011 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt - * - * 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. Neither the name NuttX 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 COPYRIGHT HOLDERS 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 - * COPYRIGHT OWNER 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. - * - ****************************************************************************/ - -/**************************************************************************** - * Included Files - ****************************************************************************/ - -#include - -#include - -/**************************************************************************** - * Pre-processor Definitions - ****************************************************************************/ - -#undef get_errno - -/**************************************************************************** - * Public Functions - ****************************************************************************/ - -/**************************************************************************** - * Name: get_errno - * - * Description: - * Return the value of the thread specific errno. This function is only - * intended to provide a mechanism for user-mode programs to get the - * thread-specific errno value. It is #define'd to the symbol errno in - * include/errno.h. - * - * Input Parameters: - * None - * - * Returned Value: - * The current value of the thread specific errno. - * - * Assumptions: - * - ****************************************************************************/ - -int get_errno(void) -{ - return *__errno(); -} diff --git a/sched/errno/errno_set.c b/sched/errno/errno_set.c deleted file mode 100644 index 2eada24b92..0000000000 --- a/sched/errno/errno_set.c +++ /dev/null @@ -1,75 +0,0 @@ -/**************************************************************************** - * sched/errno/errno_set.c - * - * Copyright (C) 2011 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt - * - * 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. Neither the name NuttX 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 COPYRIGHT HOLDERS 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 - * COPYRIGHT OWNER 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. - * - ****************************************************************************/ - -/**************************************************************************** - * Included Files - ****************************************************************************/ - -#include - -#include - -/**************************************************************************** - * Pre-processor Definitions - ****************************************************************************/ - -#undef set_errno - -/**************************************************************************** - * Public Functions - ****************************************************************************/ - -/**************************************************************************** - * Name: set_errno - * - * Description: - * Set the value of the thread specific errno. This function is only - * intended to provide a mechanism for user-mode programs to set the - * thread-specific errno value. - * - * Input Parameters: - * errcode - The thread specific errno will be set to this value. - * - * Returned Value: - * None - * - * Assumptions: - * - ****************************************************************************/ - -void set_errno(int errcode) -{ - *__errno() = errcode; -} diff --git a/sched/mqueue/mq_rcvinternal.c b/sched/mqueue/mq_rcvinternal.c index 4808bef21d..8749a85aeb 100644 --- a/sched/mqueue/mq_rcvinternal.c +++ b/sched/mqueue/mq_rcvinternal.c @@ -157,20 +157,17 @@ int nxmq_wait_receive(mqd_t mqdes, FAR struct mqueue_msg_s **rcvmsg) if ((mqdes->oflags & O_NONBLOCK) == 0) { - int saved_errno; - /* Yes.. Block and try again */ rtcb = this_task(); rtcb->msgwaitq = msgq; msgq->nwaitnotempty++; - /* "Borrow" the per-task errno to communication wake-up error + /* Initialize the 'errcode" used to communication wake-up error * conditions. */ - saved_errno = rtcb->pterrno; - rtcb->pterrno = OK; + rtcb->errcode = OK; /* Make sure this is not the idle task, descheduling that * isn't going to end well. @@ -185,9 +182,7 @@ int nxmq_wait_receive(mqd_t mqdes, FAR struct mqueue_msg_s **rcvmsg) * errno value (should be either EINTR or ETIMEDOUT). */ - ret = rtcb->pterrno; - rtcb->pterrno = saved_errno; - + ret = rtcb->errcode; if (ret != OK) { return -ret; diff --git a/sched/mqueue/mq_sndinternal.c b/sched/mqueue/mq_sndinternal.c index 0c0e84f7fd..06c5ff118a 100644 --- a/sched/mqueue/mq_sndinternal.c +++ b/sched/mqueue/mq_sndinternal.c @@ -260,8 +260,6 @@ int nxmq_wait_send(mqd_t mqdes) while (msgq->nmsgs >= msgq->maxmsgs) { - int saved_errno; - /* Block until the message queue is no longer full. * When we are unblocked, we will try again */ @@ -270,12 +268,11 @@ int nxmq_wait_send(mqd_t mqdes) rtcb->msgwaitq = msgq; msgq->nwaitnotfull++; - /* "Borrow" the per-task errno to communication wake-up error + /* Initialize the errcode used to communication wake-up error * conditions. */ - saved_errno = rtcb->pterrno; - rtcb->pterrno = OK; + rtcb->errcode = OK; /* Make sure this is not the idle task, descheduling that * isn't going to end well. @@ -290,9 +287,7 @@ int nxmq_wait_send(mqd_t mqdes) * per-task errno value (should be EINTR or ETIMEOUT). */ - ret = rtcb->pterrno; - rtcb->pterrno = saved_errno; - + ret = rtcb->errcode; if (ret != OK) { return -ret; diff --git a/sched/mqueue/mq_waitirq.c b/sched/mqueue/mq_waitirq.c index 0fb1103b76..8582cc7ff0 100644 --- a/sched/mqueue/mq_waitirq.c +++ b/sched/mqueue/mq_waitirq.c @@ -97,9 +97,9 @@ void nxmq_wait_irq(FAR struct tcb_s *wtcb, int errcode) msgq->nwaitnotfull--; } - /* Mark the errno value for the thread. */ + /* Mark the error value for the thread. */ - wtcb->pterrno = errcode; + wtcb->errcode = errcode; /* Restart the task. */ diff --git a/sched/sched/sched_continue.c b/sched/sched/sched_continue.c index 495b0e671c..ba2ca768cf 100644 --- a/sched/sched/sched_continue.c +++ b/sched/sched/sched_continue.c @@ -1,35 +1,20 @@ /**************************************************************************** * sched/sched/sched_continue.c * - * Copyright (C) 2018 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * http://www.apache.org/licenses/LICENSE-2.0 * - * 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. Neither the name NuttX 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 COPYRIGHT HOLDERS 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 - * COPYRIGHT OWNER 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. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. * ****************************************************************************/ @@ -71,7 +56,7 @@ void sched_continue(FAR struct tcb_s *tcb) flags = enter_critical_section(); /* Simply restart the thread. If is was blocked before, it will awaken - * with pterrno = EINTR and will appears as if it were awakened by a + * with errcode = EINTR and will appears as if it were awakened by a * signal. If pre-emption is not disabled this action could block this * task here! */ diff --git a/sched/sched/sched_suspend.c b/sched/sched/sched_suspend.c index e38c2cd9f8..e24b1fc99d 100644 --- a/sched/sched/sched_suspend.c +++ b/sched/sched/sched_suspend.c @@ -1,35 +1,20 @@ /**************************************************************************** * sched/sched/sched_suspend.c * - * Copyright (C) 2018 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * http://www.apache.org/licenses/LICENSE-2.0 * - * 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. Neither the name NuttX 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 COPYRIGHT HOLDERS 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 - * COPYRIGHT OWNER 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. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. * ****************************************************************************/ @@ -84,7 +69,7 @@ void sched_suspend(FAR struct tcb_s *tcb) * the block state by a signal. */ - tcb->pterrno = EINTR; + tcb->errcode = EINTR; /* Move the TCB to the g_stoppedtasks list. */ diff --git a/sched/semaphore/sem_wait.c b/sched/semaphore/sem_wait.c index 0150963e51..91811d8fc1 100644 --- a/sched/semaphore/sem_wait.c +++ b/sched/semaphore/sem_wait.c @@ -106,8 +106,6 @@ int nxsem_wait(FAR sem_t *sem) else { - int saved_errno; - /* First, verify that the task is not already waiting on a * semaphore */ @@ -144,8 +142,7 @@ int nxsem_wait(FAR sem_t *sem) * between sem_waitirq() and this functions. */ - saved_errno = rtcb->pterrno; - rtcb->pterrno = OK; + rtcb->errcode = OK; /* Add the TCB to the prioritized semaphore wait queue, after * checking this is not the idle task - descheduling that @@ -185,8 +182,7 @@ int nxsem_wait(FAR sem_t *sem) * thread was restarted. */ - ret = rtcb->pterrno != OK ? -rtcb->pterrno : OK; - rtcb->pterrno = saved_errno; + ret = rtcb->errcode != OK ? -rtcb->errcode : OK; #ifdef CONFIG_PRIORITY_INHERITANCE sched_unlock(); diff --git a/sched/semaphore/sem_waitirq.c b/sched/semaphore/sem_waitirq.c index af29167d11..2dfaf2e783 100644 --- a/sched/semaphore/sem_waitirq.c +++ b/sched/semaphore/sem_waitirq.c @@ -1,35 +1,20 @@ /**************************************************************************** * sched/semaphore/sem_waitirq.c * - * Copyright (C) 2007-2010, 2014, 2016 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * http://www.apache.org/licenses/LICENSE-2.0 * - * 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. Neither the name NuttX 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 COPYRIGHT HOLDERS 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 - * COPYRIGHT OWNER 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. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. * ****************************************************************************/ @@ -117,7 +102,7 @@ void nxsem_wait_irq(FAR struct tcb_s *wtcb, int errcode) /* Mark the errno value for the thread. */ - wtcb->pterrno = errcode; + wtcb->errcode = errcode; /* Restart the task. */ diff --git a/sched/signal/sig_deliver.c b/sched/signal/sig_deliver.c index 599c539315..d8b894e14e 100644 --- a/sched/signal/sig_deliver.c +++ b/sched/signal/sig_deliver.c @@ -1,36 +1,20 @@ /**************************************************************************** * sched/signal/sig_deliver.c * - * Copyright (C) 2007, 2008, 2012-2013, 2016, 2019 Gregory Nutt. All - * rights reserved. - * Author: Gregory Nutt + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * http://www.apache.org/licenses/LICENSE-2.0 * - * 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. Neither the name NuttX 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 COPYRIGHT HOLDERS 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 - * COPYRIGHT OWNER 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. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. * ****************************************************************************/ @@ -72,7 +56,6 @@ void nxsig_deliver(FAR struct tcb_s *stcb) sigset_t newsigprocmask; sigset_t altsigprocmask; irqstate_t flags; - int saved_errno; /* Loop while there are signals to be delivered */ @@ -116,15 +99,6 @@ void nxsig_deliver(FAR struct tcb_s *stcb) sq_addlast((FAR sq_entry_t *)sigq, &(stcb->sigpostedq)); - /* Save the thread errno. When we finished dispatching the - * signal actions and resume the task, the errno value must - * be unchanged by the operation of the signal handling. In - * particular, the EINTR indication that says that the task - * was reawakened by a signal must be retained. - */ - - saved_errno = stcb->pterrno; - /* Save a copy of the old sigprocmask and install the new * (temporary) sigprocmask. The new sigprocmask is the union * of the current sigprocmask and the sa_mask for the signal being @@ -192,11 +166,9 @@ void nxsig_deliver(FAR struct tcb_s *stcb) flags = enter_critical_section(); stcb->flags &= ~TCB_FLAG_SIGNAL_ACTION; - /* Restore the original errno value and sigprocmask. */ - - stcb->pterrno = saved_errno; - - /* What if the signal handler changed the sigprocmask? Try to retain + /* Restore the original sigprocmask. + * + * What if the signal handler changed the sigprocmask? Try to retain * any such changes here. * * REVISIT: This logic is imperfect. It will fail to detect bits set diff --git a/syscall/syscall.csv b/syscall/syscall.csv index ed9749f76d..b28559978a 100644 --- a/syscall/syscall.csv +++ b/syscall/syscall.csv @@ -28,7 +28,6 @@ "fstatfs","sys/statfs.h","","int","int","FAR struct statfs *" "fsync","unistd.h","!defined(CONFIG_DISABLE_MOUNTPOINT)","int","int" "ftruncate","unistd.h","!defined(CONFIG_DISABLE_MOUNTPOINT)","int","int","off_t" -"get_errno","errno.h","!defined(__DIRECT_ERRNO_ACCESS)","int" "getenv","stdlib.h","!defined(CONFIG_DISABLE_ENVIRON)","FAR char *","FAR const char *" "getgid","unistd.h","defined(CONFIG_SCHED_USER_IDENTITY)","gid_t" "getitimer","sys/time.h","!defined(CONFIG_DISABLE_POSIX_TIMERS)","int","int","FAR struct itimerval *" @@ -143,7 +142,6 @@ "send","sys/socket.h","defined(CONFIG_NET)","ssize_t","int","FAR const void *","size_t","int" "sendfile","sys/sendfile.h","defined(CONFIG_NET_SENDFILE)","ssize_t","int","int","FAR off_t *","size_t" "sendto","sys/socket.h","defined(CONFIG_NET)","ssize_t","int","FAR const void *","size_t","int","FAR const struct sockaddr *","socklen_t" -"set_errno","errno.h","!defined(__DIRECT_ERRNO_ACCESS)","void","int" "setenv","stdlib.h","!defined(CONFIG_DISABLE_ENVIRON)","int","FAR const char *","FAR const char *","int" "setgid","unistd.h","defined(CONFIG_SCHED_USER_IDENTITY)","int","gid_t" "sethostname","unistd.h","","int","FAR const char *","size_t" diff --git a/syscall/syscall_funclookup.c b/syscall/syscall_funclookup.c index d5e10fa614..fea78794b1 100644 --- a/syscall/syscall_funclookup.c +++ b/syscall/syscall_funclookup.c @@ -95,17 +95,6 @@ * Pre-processor Definitions ****************************************************************************/ -/* Errno access is awkward. We need to generate get_errno() and set_errno() - * interfaces to support the system calls, even though we don't use them - * ourself. - * - * The "normal" pre-processor definitions for these functions is in errno.h - * but we need the internal function prototypes in nuttx/errno.h. - */ - -#undef get_errno -#undef set_errno - /**************************************************************************** * Public Data ****************************************************************************/