Add spawn attribute logic which will eventually be needed to support posix_spawn()

git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5501 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
patacongo
2013-01-10 00:45:11 +00:00
parent 21684b51f1
commit cb85fb1daa
19 changed files with 891 additions and 25 deletions
+7 -7
View File
@@ -1239,8 +1239,8 @@ svn checkout -r5447 http://svn.code.sf.net/p/nuttx/code/trunk nuttx-code
<li> <li>
<p> <p>
New top-level Makefiles: <code>Makefile.unix</code> and <code>Makefile.win</code> (along with numerous changes to other make-related files). New top-level Makefiles: <code>Makefile.unix</code> and <code>Makefile.win</code> (along with numerous changes to other make-related files).
This adds basic support for building NuttX natively under Windows from a <code>CMD.exe</code> window (rather than in a POSIX-like environment). This adds basic support for building NuttX natively under from Windows console (rather than in a POSIX-like environment).
This build: (1) Uses all Windows style paths, (2) Uses primarily Windows batch commands from <code>CMD.exe</code>, with (3) a few extensions from <i>GNUWin32</i>. This build: (1) Uses all Windows style paths, (2) Uses primarily standard Windows batch commands with (3) a few additional commands from <i>GNUWin32</i> (such as GNU make).
</p> </p>
<p> <p>
This capability should still be considered a work in progress because: (1) It has not been verfied on all targets and tools, and (2) it still lacks some of the creature-comforts of the more mature environments (like a functional <code>configure.sh</code> script and <code>make menuconfig</code> support). This capability should still be considered a work in progress because: (1) It has not been verfied on all targets and tools, and (2) it still lacks some of the creature-comforts of the more mature environments (like a functional <code>configure.sh</code> script and <code>make menuconfig</code> support).
@@ -3202,7 +3202,7 @@ avr, m68k, m68hc11, m68hc12, m9s12, blackfin, m32c, h8, and SuperH ports.</block
<td><br></td> <td><br></td>
<td> <td>
<p> <p>
Build support has been added to support building natively in a Windes <code>CMD.exe</code> rather than in a POSIX-like environment. Build support has been added to support building natively in a Windows console rather than in a POSIX-like environment.
</p> </p>
<p> <p>
This build: This build:
@@ -3221,10 +3221,10 @@ avr, m68k, m68hc11, m68hc12, m9s12, blackfin, m32c, h8, and SuperH ports.</block
</p> </p>
<ul> <ul>
<li> <li>
<b><code>CMD.exe</code> Shell</b>. <b>Windows Console</b>.
The build must be performed in a Windows <code>CMD.exe</code shell. The build must be performed in a Windows console window.
This may be the standard <code>cmd</code> shell that comes with Windows. This may be using the standard <code>CMD.exe</code> terminal that comes with Windows.
I prefer the ConEmu command shell which can be downloaded from: I prefer the ConEmu terminal which can be downloaded from:
http://code.google.com/p/conemu-maximus5/ http://code.google.com/p/conemu-maximus5/
</li> </li>
<li> <li>
+6 -6
View File
@@ -421,7 +421,7 @@ NuttX Configuration Tool under DOS
---------------------------------- ----------------------------------
Recent versions of NuttX support building NuttX from a native Windows Recent versions of NuttX support building NuttX from a native Windows
CMD.exe shell (see "Native Windows Build" below). But kconfig-frontends console window (see "Native Windows Build" below). But kconfig-frontends
is a Linux tool. There have been some successes building a Windows is a Linux tool. There have been some successes building a Windows
native version of the kconfig-frontends tool, but that is not ready native version of the kconfig-frontends tool, but that is not ready
for prime time. for prime time.
@@ -440,8 +440,8 @@ NuttX Configuration Tool under DOS
restore CONFIG_WINDOWS_NATIVE=y and the correct CONFIG_APPS_DIR. restore CONFIG_WINDOWS_NATIVE=y and the correct CONFIG_APPS_DIR.
2) You can, with some effort, run the the Cygwin kconfig-mconf tool 2) You can, with some effort, run the the Cygwin kconfig-mconf tool
directly in the CMD.exe shell. In this case, you do not have to directly in the Windows console window. In this case, you do not
modify the .config file, but there are other complexities: have to modify the .config file, but there are other complexities:
a. You need to temporarily set the Cgywin directories in the PATH a. You need to temporarily set the Cgywin directories in the PATH
variable then run kconfig-mconf manually like: variable then run kconfig-mconf manually like:
@@ -454,7 +454,7 @@ NuttX Configuration Tool under DOS
tools/kconfig menuconfig tools/kconfig menuconfig
b. There is an issue with accessing DOS environment variables from b. There is an issue with accessing DOS environment variables from
the Cygwin kconfig-mconf running in the CMD.exe shell. The the Cygwin kconfig-mconf running in the Windows console. The
following change to the top-level Kconfig file seems to work following change to the top-level Kconfig file seems to work
around these problems: around these problems:
@@ -680,8 +680,8 @@ Native Windows Build
- A few extensions from GNUWin32 - A few extensions from GNUWin32
In this build, you cannot use a Cygwin or MSYS shell. Rather the build must In this build, you cannot use a Cygwin or MSYS shell. Rather the build must
be performed in a Windows CMD shell. Here is a better shell than than the be performed in a Windows console window. Here is a better terminal than the
standard issue, CMD shell: ConEmu which can be downloaded from: standard issue, CMD.exe terminal: ConEmu which can be downloaded from:
http://code.google.com/p/conemu-maximus5/ http://code.google.com/p/conemu-maximus5/
Build Tools. The build still relies on some Unix-like commands. I use Build Tools. The build still relies on some Unix-like commands. I use
+2 -2
View File
@@ -1468,8 +1468,8 @@ Where <subdir> is one of the following:
- A few extensions from GNUWin32 (or MSYS is you prefer) - A few extensions from GNUWin32 (or MSYS is you prefer)
In this build, you cannot use a Cygwin or MSYS shell. Rather the build must In this build, you cannot use a Cygwin or MSYS shell. Rather the build must
be performed in a Windows CMD shell. Here is a better shell than than the be performed in a Windows console. Here is a better shell than than the
standard issue, CMD shell: ConEmu which can be downloaded from: standard issue, CMD.exe shell: ConEmu which can be downloaded from:
http://code.google.com/p/conemu-maximus5/ http://code.google.com/p/conemu-maximus5/
CONFIG_HOST_WINDOWS=y : Windows CONFIG_HOST_WINDOWS=y : Windows
+32 -5
View File
@@ -43,7 +43,10 @@
#include <nuttx/config.h> #include <nuttx/config.h>
#include <sys/types.h> #include <sys/types.h>
#include <sched.h>
#include <signal.h> #include <signal.h>
#include <errno.h>
/**************************************************************************** /****************************************************************************
* Pre-processor Definitions * Pre-processor Definitions
@@ -65,14 +68,18 @@
****************************************************************************/ ****************************************************************************/
/* "The spawn.h header shall define the posix_spawnattr_t and /* "The spawn.h header shall define the posix_spawnattr_t and
* posix_spawn_file_actions_t types used in performing spawn operations. * posix_spawn_file_actions_t types used in performing spawn operations.
*
* The internal structure underlying the posix_spawnattr_t is exposed here
* because the user will be required to allocate this memory.
*/ */
struct posix_spawnattr_s struct posix_spawnattr_s
{ {
uint8_t flags; uint8_t flags;
uint8_t priority; uint8_t priority;
pid_t group; uint8_t policy;
sigset_t sigset; sigset_t sigdefault;
sigset_t sigmask;
}; };
typedef struct posix_spawnattr_s posix_spawnattr_t; typedef struct posix_spawnattr_s posix_spawnattr_t;
@@ -99,6 +106,8 @@ extern "C"
{ {
#endif #endif
/* posix_spawn[p] interfaces ************************************************/
int posix_spawn(FAR pid_t *, FAR const char *, int posix_spawn(FAR pid_t *, FAR const char *,
FAR const posix_spawn_file_actions_t *, FAR const posix_spawnattr_t *, FAR const posix_spawn_file_actions_t *, FAR const posix_spawnattr_t *,
FAR char *const [], FAR char *const []); FAR char *const [], FAR char *const []);
@@ -106,9 +115,14 @@ int posix_spawnp(FAR pid_t *, FAR const char *,
FAR const posix_spawn_file_actions_t *, FAR const posix_spawnattr_t *, FAR const posix_spawn_file_actions_t *, FAR const posix_spawnattr_t *,
FAR char *const [], FAR char *const []); FAR char *const [], FAR char *const []);
/* File action interfaces ***************************************************/
/* File action initialization and destruction */
int posix_spawn_file_actions_init(FAR posix_spawn_file_actions_t *); int posix_spawn_file_actions_init(FAR posix_spawn_file_actions_t *);
int posix_spawn_file_actions_destroy(FAR posix_spawn_file_actions_t *); int posix_spawn_file_actions_destroy(FAR posix_spawn_file_actions_t *);
/* Add file action interfaces */
int posix_spawn_file_actions_addclose(FAR posix_spawn_file_actions_t *, int posix_spawn_file_actions_addclose(FAR posix_spawn_file_actions_t *,
int); int);
int posix_spawn_file_actions_adddup2(FAR posix_spawn_file_actions_t *, int posix_spawn_file_actions_adddup2(FAR posix_spawn_file_actions_t *,
@@ -116,11 +130,22 @@ int posix_spawn_file_actions_adddup2(FAR posix_spawn_file_actions_t *,
int posix_spawn_file_actions_addopen(FAR posix_spawn_file_actions_t *, int posix_spawn_file_actions_addopen(FAR posix_spawn_file_actions_t *,
int, FAR const char *, int, mode_t); int, FAR const char *, int, mode_t);
/* Spawn attributes interfaces **********************************************/
/* Spawn attributes initialization and destruction */
int posix_spawnattr_init(FAR posix_spawnattr_t *); int posix_spawnattr_init(FAR posix_spawnattr_t *);
int posix_spawnattr_destroy(FAR posix_spawnattr_t *);
/* int posix_spawnattr_destroy(FAR posix_spawnattr_t *); */
#ifdef CONFIG_DEBUG
# define posix_spawnattr_destroy(attr) (attr ? 0 : EINVAL)
#else
# define posix_spawnattr_destroy(attr) (0)
#endif
/* Get spawn attributes interfaces */
int posix_spawnattr_getflags(FAR const posix_spawnattr_t *, FAR short *); int posix_spawnattr_getflags(FAR const posix_spawnattr_t *, FAR short *);
int posix_spawnattr_getpgroup(FAR const posix_spawnattr_t *, FAR pid_t *); #define posix_spawnattr_getpgroup(attr,group) (ENOSYS)
int posix_spawnattr_getschedparam(FAR const posix_spawnattr_t *, int posix_spawnattr_getschedparam(FAR const posix_spawnattr_t *,
FAR struct sched_param *); FAR struct sched_param *);
int posix_spawnattr_getschedpolicy(FAR const posix_spawnattr_t *, int posix_spawnattr_getschedpolicy(FAR const posix_spawnattr_t *,
@@ -130,8 +155,10 @@ int posix_spawnattr_getsigdefault(FAR const posix_spawnattr_t *,
int posix_spawnattr_getsigmask(FAR const posix_spawnattr_t *, int posix_spawnattr_getsigmask(FAR const posix_spawnattr_t *,
FAR sigset_t *); FAR sigset_t *);
/* Set spawn attributes interfaces */
int posix_spawnattr_setflags(FAR posix_spawnattr_t *, short); int posix_spawnattr_setflags(FAR posix_spawnattr_t *, short);
int posix_spawnattr_setpgroup(FAR posix_spawnattr_t *, pid_t); #define posix_spawnattr_setpgroup(attr,group) (ENOSYS)
int posix_spawnattr_setschedparam(FAR posix_spawnattr_t *, int posix_spawnattr_setschedparam(FAR posix_spawnattr_t *,
FAR const struct sched_param *); FAR const struct sched_param *);
int posix_spawnattr_setschedpolicy(FAR posix_spawnattr_t *, int); int posix_spawnattr_setschedpolicy(FAR posix_spawnattr_t *, int);
+5
View File
@@ -40,6 +40,11 @@ ifeq ($(CONFIG_LIBC_EXECFUNCS),y)
CSRCS += lib_psfa_addaction.c lib_psfa_addclose.c lib_psfa_adddup2.c CSRCS += lib_psfa_addaction.c lib_psfa_addclose.c lib_psfa_adddup2.c
CSRCS += lib_psfa_addopen.c lib_psfa_destroy.c lib_psfa_init.c CSRCS += lib_psfa_addopen.c lib_psfa_destroy.c lib_psfa_init.c
CSRCS += lib_psa_getflags.c lib_psa_getschedparam.c lib_psa_getschedpolicy.c
CSRCS += lib_psa_getsigdefault.c lib_psa_getsigmask.c lib_psa_init.c
CSRCS += lib_psa_setflags.c lib_psa_setschedparam.c lib_psa_setschedpolicy.c
CSRCS += lib_psa_setsigdefault.c lib_psa_setsigmask.c
# Add the spawn directory to the build # Add the spawn directory to the build
DEPPATH += --dep-path spawn DEPPATH += --dep-path spawn
+72
View File
@@ -0,0 +1,72 @@
/****************************************************************************
* libc/string/lib_psa_getflags.c
*
* Copyright (C) 2013 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* 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 <nuttx/config.h>
#include <spawn.h>
#include <assert.h>
/****************************************************************************
* Global Functions
****************************************************************************/
/****************************************************************************
* Name: posix_spawnattr_getflags
*
* Description:
* The posix_spawnattr_getflags() function will obtain the value of the
* spawn-flags attribute from the attributes object referenced by attr.
*
* Input Parameters:
* attr - The address spawn attributes to be queried.
* flags - The location to return the spawn flags
*
* Returned Value:
* On success, these functions return 0; on failure they return an error
* number from <errno.h>.
*
****************************************************************************/
int posix_spawnattr_getflags(FAR const posix_spawnattr_t *attr,
FAR short *flags)
{
DEBUGASSERT(attr && flags);
*flags = (short)attr->flags;
return OK;
}
+74
View File
@@ -0,0 +1,74 @@
/****************************************************************************
* libc/string/lib_psa_getschedparam.c
*
* Copyright (C) 2013 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* 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 <nuttx/config.h>
#include <sched.h>
#include <spawn.h>
#include <assert.h>
/****************************************************************************
* Global Functions
****************************************************************************/
/****************************************************************************
* Name: posix_spawnattr_getschedparam
*
* Description:
* The posix_spawnattr_getschedparam() function will obtain the value of
* the spawn-schedparam attribute from the attributes object referenced
* by attr.
*
* Input Parameters:
* attr - The address spawn attributes to be queried.
* flags - The location to return the sched_priority value.
*
* Returned Value:
* On success, these functions return 0; on failure they return an error
* number from <errno.h>.
*
****************************************************************************/
int posix_spawnattr_getschedparam(FAR const posix_spawnattr_t *attr,
FAR struct sched_param *param)
{
DEBUGASSERT(attr && param);
param->sched_priority = attr->priority;
return OK;
}
+73
View File
@@ -0,0 +1,73 @@
/****************************************************************************
* libc/string/lib_psa_getschedpolicy.c
*
* Copyright (C) 2013 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* 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 <nuttx/config.h>
#include <spawn.h>
#include <assert.h>
/****************************************************************************
* Global Functions
****************************************************************************/
/****************************************************************************
* Name: posix_spawnattr_getschedpolicy
*
* Description:
* The posix_spawnattr_getschedpolicy() function shall obtain the value
* of the spawn-schedpolicy attribute from the attributes object referenced
* by attr.
*
* Input Parameters:
* attr - The address spawn attributes to be queried.
* policy - The location to return the scheduler policy
*
* Returned Value:
* On success, these functions return 0; on failure they return an error
* number from <errno.h>.
*
****************************************************************************/
int posix_spawnattr_getschedpolicy(FAR const posix_spawnattr_t *attr,
FAR int *policy)
{
DEBUGASSERT(attr && policy);
*policy = (int)attr->policy;
return OK;
}
+74
View File
@@ -0,0 +1,74 @@
/****************************************************************************
* libc/string/lib_psa_getsigdefault.c
*
* Copyright (C) 2013 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* 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 <nuttx/config.h>
#include <signal.h>
#include <spawn.h>
#include <assert.h>
/****************************************************************************
* Global Functions
****************************************************************************/
/****************************************************************************
* Name: posix_spawnattr_getsigdefault
*
* Description:
* The posix_spawnattr_getsigdefault() function will obtain the value of
* the spawn-sigdefault attribute from the attributes object referenced
* by attr.
*
* Input Parameters:
* attr - The address spawn attributes to be queried.
* sigdefault - The location to return the signal set
*
* Returned Value:
* On success, these functions return 0; on failure they return an error
* number from <errno.h>.
*
****************************************************************************/
int posix_spawnattr_getsigdefault(FAR const posix_spawnattr_t *attr,
FAR sigset_t *sigdefault)
{
DEBUGASSERT(attr && sigdefault);
*sigdefault = attr->sigdefault;
return OK;
}
+74
View File
@@ -0,0 +1,74 @@
/****************************************************************************
* libc/string/lib_psa_getsigmask.c
*
* Copyright (C) 2013 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* 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 <nuttx/config.h>
#include <signal.h>
#include <spawn.h>
#include <assert.h>
/****************************************************************************
* Global Functions
****************************************************************************/
/****************************************************************************
* Name: posix_spawnattr_getsigmask
*
* Description:
* The posix_spawnattr_getsigdefault() function will obtain the value of
* the spawn-sigmask attribute from the attributes object referenced
* by attr.
*
* Input Parameters:
* attr - The address spawn attributes to be queried.
* sigmask - The location to return the spawn flags
*
* Returned Value:
* On success, these functions return 0; on failure they return an error
* number from <errno.h>.
*
****************************************************************************/
int posix_spawnattr_getsigmask(FAR const posix_spawnattr_t *attr,
FAR sigset_t *sigmask)
{
DEBUGASSERT(attr && sigmask);
*sigmask = attr->sigmask;
return OK;
}
+102
View File
@@ -0,0 +1,102 @@
/****************************************************************************
* libc/string/lib_psa_init.c
*
* Copyright (C) 2013 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* 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 <nuttx/config.h>
#include <sched.h>
#include <signal.h>
#include <spawn.h>
#include <assert.h>
#include <errno.h>
#include <errno.h>
/****************************************************************************
* Global Functions
****************************************************************************/
/****************************************************************************
* Name: posix_spawnattr_init
*
* Description:
* The posix_spawnattr_init() function initializes the object referenced
* by attr, to an empty set of spawn attributes for subsequent use in a
* call to posix_spawn() or posix_spawnp().
*
* Input Parameters:
* attr - The address spawn attributes to be initialized.
*
* Returned Value:
* On success, these functions return 0; on failure they return an error
* number from <errno.h>.
*
****************************************************************************/
int posix_spawnattr_init(posix_spawnattr_t *attr)
{
struct sched_param param;
int ret;
DEBUGASSERT(attr);
/* Flags: None */
attr->flags = 0;
/* Signal sets. Don't really matter unless flags are set (then the settings
* are not really our responsibility).
*/
sigemptyset(&attr->sigdefault);
sigemptyset(&attr->sigmask);
/* Set the default scheduler policy to the policy of this task */
attr->policy = sched_getscheduler(0);
/* Set the default priority to the same priority as this task */
ret = sched_getparam(0, &param);
if (ret < 0)
{
return errno;
}
attr->priority = param.sched_priority;
return OK;
}
+71
View File
@@ -0,0 +1,71 @@
/****************************************************************************
* libc/string/lib_psa_setflags.c
*
* Copyright (C) 2013 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* 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 <nuttx/config.h>
#include <spawn.h>
#include <assert.h>
/****************************************************************************
* Global Functions
****************************************************************************/
/****************************************************************************
* Name: posix_spawnattr_setflags
*
* Description:
* The posix_spawnattr_setflags() function will set the spawn-flags
* attribute in an initialized attributes object referenced by attr.
*
* Input Parameters:
* attr - The address spawn attributes to be used.
* flags - The new value of the spawn flags
*
* Returned Value:
* On success, these functions return 0; on failure they return an error
* number from <errno.h>.
*
****************************************************************************/
int posix_spawnattr_setflags(FAR posix_spawnattr_t *attr, short flags)
{
DEBUGASSERT(attr && (flags & ~0xff) == 0);
attr->flags = (uint8_t)flags;
return OK;
}
+74
View File
@@ -0,0 +1,74 @@
/****************************************************************************
* libc/string/lib_psa_setschedparam.c
*
* Copyright (C) 2013 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* 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 <nuttx/config.h>
#include <sched.h>
#include <spawn.h>
#include <assert.h>
/****************************************************************************
* Global Functions
****************************************************************************/
/****************************************************************************
* Name: posix_spawnattr_setschedparam
*
* Description:
* The posix_spawnattr_setschedparam() function shall set the spawn-
* schedparam attribute in an initialized attributes object referenced
* by attr.
*
* Input Parameters:
* attr - The address spawn attributes to be used.
* parm - The new sched_priority to set.
*
* Returned Value:
* On success, these functions return 0; on failure they return an error
* number from <errno.h>.
*
****************************************************************************/
int posix_spawnattr_setschedparam(FAR posix_spawnattr_t *attr,
FAR const struct sched_param *param)
{
DEBUGASSERT(attr && param && (unsigned)param->sched_priority <= 0xff);
attr->priority = (uint8_t)param->sched_priority;
return OK;
}
+72
View File
@@ -0,0 +1,72 @@
/****************************************************************************
* libc/string/lib_psa_setschedpolicy.c
*
* Copyright (C) 2013 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* 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 <nuttx/config.h>
#include <spawn.h>
#include <assert.h>
/****************************************************************************
* Global Functions
****************************************************************************/
/****************************************************************************
* Name: posix_spawnattr_setschedpolicy
*
* Description:
* The posix_spawnattr_setschedpolicy() function will set the spawn-
* schedpolicy attribute in an initialized attributes object referenced
* by attr.
*
* Input Parameters:
* attr - The address spawn attributes to be used.
* flags - The new value of the spawn flags
*
* Returned Value:
* On success, these functions return 0; on failure they return an error
* number from <errno.h>.
*
****************************************************************************/
int posix_spawnattr_setschedpolicy(FAR posix_spawnattr_t *attr, int policy)
{
DEBUGASSERT(attr && (policy == SCHED_FIFO || policy == SCHED_RR));
attr->policy = (uint8_t)policy;
return OK;
}
+74
View File
@@ -0,0 +1,74 @@
/****************************************************************************
* libc/string/lib_psa_setsigdefault.c
*
* Copyright (C) 2013 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* 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 <nuttx/config.h>
#include <signal.h>
#include <spawn.h>
#include <assert.h>
/****************************************************************************
* Global Functions
****************************************************************************/
/****************************************************************************
* Name: posix_spawnattr_setsigdefault
*
* Description:
* The posix_spawnattr_setsigdefault() function will set the spawn-
* sigdefault attribute in an initialized attributes object referenced
* by attr.
*
* Input Parameters:
* attr - The address spawn attributes to be used.
* flags - The new value of the default signal set
*
* Returned Value:
* On success, these functions return 0; on failure they return an error
* number from <errno.h>.
*
****************************************************************************/
int posix_spawnattr_setsigdefault(FAR posix_spawnattr_t *attr,
FAR const sigset_t *sigdefault)
{
DEBUGASSERT(attr && sigdefault);
attr->sigdefault = *sigdefault;
return OK;
}
+74
View File
@@ -0,0 +1,74 @@
/****************************************************************************
* libc/string/lib_psa_setsigmask.c
*
* Copyright (C) 2013 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* 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 <nuttx/config.h>
#include <signal.h>
#include <spawn.h>
#include <assert.h>
/****************************************************************************
* Global Functions
****************************************************************************/
/****************************************************************************
* Name: posix_spawnattr_setsigmask
*
* Description:
* The posix_spawnattr_setsigmask() function will set the spawn-
* sigmask attribute in an initialized attributes object referenced
* by attr.
*
* Input Parameters:
* attr - The address spawn attributes to be used.
* flags - The new value of the default signal set
*
* Returned Value:
* On success, these functions return 0; on failure they return an error
* number from <errno.h>.
*
****************************************************************************/
int posix_spawnattr_setsigmask(FAR posix_spawnattr_t *attr,
FAR const sigset_t *sigmask)
{
DEBUGASSERT(attr && sigmask);
attr->sigmask = *sigmask;
return OK;
}
+2 -2
View File
@@ -56,8 +56,8 @@
* Description: * Description:
* The posix_spawn_file_actions_addclose() function adds a close operation * The posix_spawn_file_actions_addclose() function adds a close operation
* to the list of operations associated with the object referenced by * to the list of operations associated with the object referenced by
* file_actions, for subsequent use in a call to posix_spawn(2) or * file_actions, for subsequent use in a call to posix_spawn() or
* posix_spawnp(2). The descriptor referred to by fd is closed as if * posix_spawnp(). The descriptor referred to by fd is closed as if
* close() had been called on it prior to the new child process starting * close() had been called on it prior to the new child process starting
* execution. * execution.
* *
+2 -2
View File
@@ -56,8 +56,8 @@
* Description: * Description:
* The posix_spawn_file_actions_adddup2() function adds a dup2 operation to * The posix_spawn_file_actions_adddup2() function adds a dup2 operation to
* the list of operations associated with the object referenced by * the list of operations associated with the object referenced by
* file_actions, for subsequent use in a call to posix_spawn(2) or * file_actions, for subsequent use in a call to posix_spawn() or
* posix_spawnp(2). The descriptor referred to by fd2 is created as * posix_spawnp(). The descriptor referred to by fd2 is created as
* if dup2() had been called on fd1 prior to the new child process * if dup2() had been called on fd1 prior to the new child process
* starting execution. * starting execution.
* *
+1 -1
View File
@@ -51,7 +51,7 @@
* Description: * Description:
* The posix_spawn_file_actions_init() function initializes the object * The posix_spawn_file_actions_init() function initializes the object
* referenced by file_actions, to an empty set of file actions for * referenced by file_actions, to an empty set of file actions for
* subsequent use in a call to posix_spawn(2) or posix_spawnp(2). * subsequent use in a call to posix_spawn() or posix_spawnp().
* *
* Input Parameters: * Input Parameters:
* file_actions - The address of the posix_spawn_file_actions_t to be * file_actions - The address of the posix_spawn_file_actions_t to be