diff options
author | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2012-11-10 15:47:45 +0000 |
---|---|---|
committer | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2012-11-10 15:47:45 +0000 |
commit | a69a97b03b52f369211bde6a473efe6d79068fe8 (patch) | |
tree | 717b5e7f971706d7f3206153d45948b7ba0ecbcf /nuttx/lib/misc | |
parent | 0c0440210befd8e4bc9971defad4d654c03aae3b (diff) | |
download | px4-firmware-a69a97b03b52f369211bde6a473efe6d79068fe8.tar.gz px4-firmware-a69a97b03b52f369211bde6a473efe6d79068fe8.tar.bz2 px4-firmware-a69a97b03b52f369211bde6a473efe6d79068fe8.zip |
move lib/ to libc/ to make room for a true lib/ directory. Rename libraries to match
git-svn-id: http://svn.code.sf.net/p/nuttx/code/trunk@5328 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/lib/misc')
-rw-r--r-- | nuttx/lib/misc/Make.defs | 69 | ||||
-rw-r--r-- | nuttx/lib/misc/lib_crc32.c | 123 | ||||
-rw-r--r-- | nuttx/lib/misc/lib_dbg.c | 165 | ||||
-rw-r--r-- | nuttx/lib/misc/lib_dumpbuffer.c | 129 | ||||
-rw-r--r-- | nuttx/lib/misc/lib_filesem.c | 145 | ||||
-rw-r--r-- | nuttx/lib/misc/lib_init.c | 207 | ||||
-rw-r--r-- | nuttx/lib/misc/lib_match.c | 148 | ||||
-rw-r--r-- | nuttx/lib/misc/lib_sendfile.c | 297 | ||||
-rw-r--r-- | nuttx/lib/misc/lib_streamsem.c | 90 |
9 files changed, 0 insertions, 1373 deletions
diff --git a/nuttx/lib/misc/Make.defs b/nuttx/lib/misc/Make.defs deleted file mode 100644 index c12533f75..000000000 --- a/nuttx/lib/misc/Make.defs +++ /dev/null @@ -1,69 +0,0 @@ -############################################################################ -# lib/misc/Make.defs -# -# Copyright (C) 2011-2012 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. -# -############################################################################ - -# Add the internal C files to the build - -CSRCS += lib_init.c lib_filesem.c - -# Add C files that depend on file OR socket descriptors - -ifneq ($(CONFIG_NFILE_DESCRIPTORS),0) - -CSRCS += lib_sendfile.c -ifneq ($(CONFIG_NFILE_STREAMS),0) -CSRCS += lib_streamsem.c -endif - -else -ifneq ($(CONFIG_NSOCKET_DESCRIPTORS),0) - -CSRCS += lib_sendfile.c -ifneq ($(CONFIG_NFILE_STREAMS),0) -CSRCS += lib_streamsem.c -endif - -endif -endif - -# Add the miscellaneous C files to the build - -CSRCS += lib_match.c -CSRCS += lib_crc32.c -CSRCS += lib_dbg.c lib_dumpbuffer.c - -# Add the misc directory to the build - -DEPPATH += --dep-path misc -VPATH += :misc diff --git a/nuttx/lib/misc/lib_crc32.c b/nuttx/lib/misc/lib_crc32.c deleted file mode 100644 index f851598e0..000000000 --- a/nuttx/lib/misc/lib_crc32.c +++ /dev/null @@ -1,123 +0,0 @@ -/************************************************************************************************ - * lib/misc/lib_crc32.c - * - * This file is a part of NuttX: - * - * Copyright (C) 2010-2011 Gregory Nutt. All rights reserved. - * - * The logic in this file was developed by Gary S. Brown: - * - * COPYRIGHT (C) 1986 Gary S. Brown. You may use this program, or code or tables - * extracted from it, as desired without restriction. - * - * First, the polynomial itself and its table of feedback terms. The polynomial is: - * - * X^32+X^26+X^23+X^22+X^16+X^12+X^11+X^10+X^8+X^7+X^5+X^4+X^2+X^1+X^0 - * - * Note that we take it "backwards" and put the highest-order term in the lowest-order bit. - * The X^32 term is "implied"; the LSB is the X^31 term, etc. The X^0 term (usually shown - * as "+1") results in the MSB being 1 - * - * Note that the usual hardware shift register implementation, which is what we're using - * (we're merely optimizing it by doing eight-bit chunks at a time) shifts bits into the - * lowest-order term. In our implementation, that means shifting towards the right. Why - * do we do it this way? Because the calculated CRC must be transmitted in order from - * highest-order term to lowest-order term. UARTs transmit characters in order from LSB - * to MSB. By storing the CRC this way we hand it to the UART in the order low-byte to - * high-byte; the UART sends each low-bit to hight-bit; and the result is transmission bit - * by bit from highest- to lowest-order term without requiring any bit shuffling on our - * part. Reception works similarly - * - * The feedback terms table consists of 256, 32-bit entries. Notes - * - * - The table can be generated at runtime if desired; code to do so is shown later. It - * might not be obvious, but the feedback terms simply represent the results of eight - * shift/xor operations for all combinations of data and CRC register values - * - * - The values must be right-shifted by eight bits by the updcrc logic; the shift must - * be u_(bring in zeroes). On some hardware you could probably optimize the shift in - * assembler by using byte-swap instructions polynomial $edb88320 - ************************************************************************************************/ - -/************************************************************************************************ - * Included Files - ************************************************************************************************/ - -#include <sys/types.h> -#include <stdint.h> -#include <crc32.h> - -/************************************************************************************************ - * Private Data - ************************************************************************************************/ - -static const uint32_t crc32_tab[] = -{ - 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, - 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, - 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, - 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, - 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, - 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, - 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, - 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, - 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, - 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, - 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, - 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, - 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, - 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, - 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, - 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, - 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, - 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, - 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, - 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, - 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, - 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, - 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, - 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, - 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, - 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, - 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, - 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, - 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, - 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, - 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, - 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d -}; - -/************************************************************************************************ - * Public Functions - ************************************************************************************************/ -/************************************************************************************************ - * Name: crc32part - * - * Description: - * Continue CRC calculation on a part of the buffer. - * - ************************************************************************************************/ - -uint32_t crc32part(FAR const uint8_t *src, size_t len, uint32_t crc32val) -{ - size_t i; - - for (i = 0; i < len; i++) - { - crc32val = crc32_tab[(crc32val ^ src[i]) & 0xff] ^ (crc32val >> 8); - } - return crc32val; -} - -/************************************************************************************************ - * Name: crc32 - * - * Description: - * Return a 32-bit CRC of the contents of the 'src' buffer, length 'len' - * - ************************************************************************************************/ - -uint32_t crc32(FAR const uint8_t *src, size_t len) -{ - return crc32part(src, len, 0); -} diff --git a/nuttx/lib/misc/lib_dbg.c b/nuttx/lib/misc/lib_dbg.c deleted file mode 100644 index aacdaa30a..000000000 --- a/nuttx/lib/misc/lib_dbg.c +++ /dev/null @@ -1,165 +0,0 @@ -/**************************************************************************** - * lib/misc/lib_dbg.c - * - * Copyright (C) 2007-2009, 2011-2012 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 <stdarg.h> -#include <debug.h> - -#include "lib_internal.h" - -/**************************************************************************** - * Global Variables - ****************************************************************************/ - -/* Debug output is initially disabled */ - -#ifdef CONFIG_DEBUG_ENABLE -bool g_dbgenable; -#endif - -/**************************************************************************** - * Global Functions - ****************************************************************************/ - -/**************************************************************************** - * Name: dbg_enable - * - * Description: - * Enable or disable debug output. - * - ****************************************************************************/ - -#ifdef CONFIG_DEBUG_ENABLE -void dbg_enable(bool enable) -{ - g_dbgenable = enable; -} -#endif - -/**************************************************************************** - * Name: dbg, lldbg, vdbg - * - * Description: - * If the cross-compiler's pre-processor does not support variable - * length arguments, then these additional APIs will be built. - * - ****************************************************************************/ - -#ifndef CONFIG_CPP_HAVE_VARARGS -#ifdef CONFIG_DEBUG -int dbg(const char *format, ...) -{ - va_list ap; - int ret; - -#ifdef CONFIG_DEBUG_ENABLE - ret = 0; - if (g_dbgenable) -#endif - { - va_start(ap, format); - ret = lib_rawvprintf(format, ap); - va_end(ap); - } - - return ret; -} - -#ifdef CONFIG_ARCH_LOWPUTC -int lldbg(const char *format, ...) -{ - va_list ap; - int ret; - -#ifdef CONFIG_DEBUG_ENABLE - ret = 0; - if (g_dbgenable) -#endif - { - va_start(ap, format); - ret = lib_lowvprintf(format, ap); - va_end(ap); - } - - return ret; -} -#endif - -#ifdef CONFIG_DEBUG_VERBOSE -int vdbg(const char *format, ...) -{ - va_list ap; - int ret; - -#ifdef CONFIG_DEBUG_ENABLE - ret = 0; - if (g_dbgenable) -#endif - { - va_start(ap, format); - ret = lib_rawvprintf(format, ap); - va_end(ap); - } - - return ret; -} - -#ifdef CONFIG_ARCH_LOWPUTC -int llvdbg(const char *format, ...) -{ - va_list ap; - int ret; - -#ifdef CONFIG_DEBUG_ENABLE - ret = 0; - if (g_dbgenable) -#endif - { - va_start(ap, format); - ret = lib_lowvprintf(format, ap); - va_end(ap); - } - - return ret; -} -#endif /* CONFIG_ARCH_LOWPUTC */ -#endif /* CONFIG_DEBUG_VERBOSE */ -#endif /* CONFIG_DEBUG */ -#endif /* CONFIG_CPP_HAVE_VARARGS */ diff --git a/nuttx/lib/misc/lib_dumpbuffer.c b/nuttx/lib/misc/lib_dumpbuffer.c deleted file mode 100644 index 155468ca1..000000000 --- a/nuttx/lib/misc/lib_dumpbuffer.c +++ /dev/null @@ -1,129 +0,0 @@ -/**************************************************************************** - * lib/misc/lib_dumpbuffer.c - * - * Copyright (C) 2009, 2011 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 <nuttx/compiler.h> - -#include <stdint.h> -#include <debug.h> - -/**************************************************************************** - * Pre-processor definitions - ****************************************************************************/ - -/* Select the lowest level debug interface available */ - -#ifdef CONFIG_CPP_HAVE_VARARGS -# ifdef CONFIG_ARCH_LOWPUTC -# define message(format, arg...) lib_lowprintf(format, ##arg) -# else -# define message(format, arg...) lib_rawprintf(format, ##arg) -# endif -#else -# ifdef CONFIG_ARCH_LOWPUTC -# define message lib_lowprintf -# else -# define message lib_rawprintf -# endif -#endif - -/**************************************************************************** - * Public Functions - ****************************************************************************/ - -/**************************************************************************** - * Name: lib_dumpbuffer - * - * Description: - * Do a pretty buffer dump - * - ****************************************************************************/ - -void lib_dumpbuffer(FAR const char *msg, FAR const uint8_t *buffer, unsigned int buflen) -{ - int i, j, k; - - message("%s (%p):\n", msg, buffer); - for (i = 0; i < buflen; i += 32) - { - message("%04x: ", i); - for (j = 0; j < 32; j++) - { - k = i + j; - - if (j == 16) - { - message(" "); - } - - if (k < buflen) - { - message("%02x", buffer[k]); - } - else - { - message(" "); - } - } - - message(" "); - for (j = 0; j < 32; j++) - { - k = i + j; - - if (j == 16) - { - message(" "); - } - - if (k < buflen) - { - if (buffer[k] >= 0x20 && buffer[k] < 0x7f) - { - message("%c", buffer[k]); - } - else - { - message("."); - } - } - } - message("\n"); - } -} diff --git a/nuttx/lib/misc/lib_filesem.c b/nuttx/lib/misc/lib_filesem.c deleted file mode 100644 index 1d1f25c2f..000000000 --- a/nuttx/lib/misc/lib_filesem.c +++ /dev/null @@ -1,145 +0,0 @@ -/************************************************************************ - * lib/misc/lib_filesem.c - * - * Copyright (C) 2007, 2009, 2011 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 <sys/types.h> -#include <unistd.h> -#include <semaphore.h> -#include <errno.h> -#include <assert.h> - -#include "lib_internal.h" - -#if CONFIG_STDIO_BUFFER_SIZE > 0 - -/************************************************************************ - * Pre-processor Definitions - ************************************************************************/ - -/************************************************************************ - * Private Data - ************************************************************************/ - -/************************************************************************ - * Global Functions - ************************************************************************/ - -/************************************************************************ - * lib_sem_initialize - ************************************************************************/ - -void lib_sem_initialize(FAR struct file_struct *stream) -{ - /* Initialize the LIB semaphore to one (to support one-at- - * a-time access to private data sets. - */ - - (void)sem_init(&stream->fs_sem, 0, 1); - - stream->fs_holder = -1; - stream->fs_counts = 0; -} - -/************************************************************************ - * lib_take_semaphore - ************************************************************************/ - -void lib_take_semaphore(FAR struct file_struct *stream) -{ - pid_t my_pid = getpid(); - - /* Do I already have the semaphore? */ - - if (stream->fs_holder == my_pid) - { - /* Yes, just increment the number of references that I have */ - - stream->fs_counts++; - } - else - { - /* Take the semaphore (perhaps waiting) */ - - while (sem_wait(&stream->fs_sem) != 0) - { - /* The only case that an error should occr here is if - * the wait was awakened by a signal. - */ - - ASSERT(get_errno() == EINTR); - } - - /* We have it. Claim the stak and return */ - - stream->fs_holder = my_pid; - stream->fs_counts = 1; - } -} - -/************************************************************************ - * lib_give_semaphore - ************************************************************************/ - -void lib_give_semaphore(FAR struct file_struct *stream) -{ - pid_t my_pid = getpid(); - - /* I better be holding at least one reference to the semaphore */ - - ASSERT(stream->fs_holder == my_pid); - - /* Do I hold multiple references to the semphore */ - - if (stream->fs_counts > 1) - { - /* Yes, just release one count and return */ - - stream->fs_counts--; - } - else - { - /* Nope, this is the last reference I have */ - - stream->fs_holder = -1; - stream->fs_counts = 0; - ASSERT(sem_post(&stream->fs_sem) == 0); - } -} -#endif /* CONFIG_STDIO_BUFFER_SIZE */ diff --git a/nuttx/lib/misc/lib_init.c b/nuttx/lib/misc/lib_init.c deleted file mode 100644 index 3403a837b..000000000 --- a/nuttx/lib/misc/lib_init.c +++ /dev/null @@ -1,207 +0,0 @@ -/************************************************************ - * lib/misc/lib_init.c - * - * Copyright (C) 2007, 2011 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 <stdio.h> -#include <string.h> -#include <errno.h> - -#include <nuttx/kmalloc.h> -#include <nuttx/fs/fs.h> -#include <nuttx/lib.h> - -#include "lib_internal.h" - -/************************************************************ - * Definitions - ************************************************************/ - -/************************************************************ - * Private Variables - ************************************************************/ - -/************************************************************ - * Private Functions - ************************************************************/ - -/************************************************************ - * Public Functions - ************************************************************/ - -/************************************************************ - * lib_initialize - ************************************************************/ - -/* General library initialization hook */ - -void weak_const_function lib_initialize(void) -{ -} - -#if CONFIG_NFILE_STREAMS > 0 -/* The following function is called when a new TCB is allocated. It - * creates the streamlist instance that is stored in the TCB. - */ - -FAR struct streamlist *lib_alloclist(void) -{ - FAR struct streamlist *list; - list = (FAR struct streamlist*)lib_zalloc(sizeof(struct streamlist)); - if (list) - { - int i; - - /* Start with a reference count of one */ - - list->sl_crefs = 1; - - /* Initialize the list access mutex */ - - (void)sem_init(&list->sl_sem, 0, 1); - - /* Initialize each FILE structure */ - - for (i = 0; i < CONFIG_NFILE_STREAMS; i++) - { - /* Clear the IOB */ - - memset(&list->sl_streams[i], 0, sizeof(FILE)); - - /* Indicate not opened */ - - list->sl_streams[i].fs_filedes = -1; - - /* Initialize the stream semaphore to one to support one-at- - * a-time access to private data sets. - */ - - lib_sem_initialize(&list->sl_streams[i]); - } - } - return list; - -} - -/* This function is called when a TCB is closed (such as with - * pthread_create(). It increases the reference count on the stream - * list. - */ - -void lib_addreflist(FAR struct streamlist *list) -{ - if (list) - { - /* Increment the reference count on the list. - * NOTE: that we disable interrupts to do this - * (vs. taking the list semaphore). We do this - * because file cleanup operations often must be - * done from the IDLE task which cannot wait - * on semaphores. - */ - - register irqstate_t flags = irqsave(); - list->sl_crefs++; - irqrestore(flags); - } -} - -/* this function is called when a TCB is destroyed. Note that is - * does not close the file by release this inode. This happens - * separately when the file descriptor list is freed. - */ - -void lib_releaselist(FAR struct streamlist *list) -{ - int crefs; - if (list) - { - /* Decrement the reference count on the list. - * NOTE: that we disable interrupts to do this - * (vs. taking the list semaphore). We do this - * because file cleanup operations often must be - * done from the IDLE task which cannot wait - * on semaphores. - */ - - register irqstate_t flags = irqsave(); - crefs = --(list->sl_crefs); - irqrestore(flags); - - /* If the count decrements to zero, then there is no reference - * to the structure and it should be deallocated. Since there - * are references, it would be an error if any task still held - * a reference to the list's semaphore. - */ - - if (crefs <= 0) - { -#if CONFIG_STDIO_BUFFER_SIZE > 0 - int i; -#endif - /* Destroy the semaphore and release the filelist */ - - (void)sem_destroy(&list->sl_sem); - - /* Release each stream in the list */ - -#if CONFIG_STDIO_BUFFER_SIZE > 0 - for (i = 0; i < CONFIG_NFILE_STREAMS; i++) - { - /* Destroy the semaphore that protects the IO buffer */ - - (void)sem_destroy(&list->sl_streams[i].fs_sem); - - /* Release the IO buffer */ - if (list->sl_streams[i].fs_bufstart) - { - sched_free(list->sl_streams[i].fs_bufstart); - } - } -#endif - /* Finally, release the list itself */ - - sched_free(list); - } - } -} - -#endif /* CONFIG_NFILE_STREAMS */ - - diff --git a/nuttx/lib/misc/lib_match.c b/nuttx/lib/misc/lib_match.c deleted file mode 100644 index 18e0632ec..000000000 --- a/nuttx/lib/misc/lib_match.c +++ /dev/null @@ -1,148 +0,0 @@ -/**************************************************************************** - * lib/misc/lib_match.c - simple shell-style filename matcher - * - * Simple shell-style filename pattern matcher written by Jef Poskanzer - * This pattern matcher only handles '?', '*' and '**', and multiple - * patterns separated by '|'. - * - * Copyright © 1995,2000 by Jef Poskanzer <jef@mail.acme.com>. - * All rights reserved. - * - * 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. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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 <string.h> -#include <nuttx/regex.h> - -/**************************************************************************** - * Private Functions - ****************************************************************************/ - -/**************************************************************************** - * Name: match_one - * - * Description: - * Does all of the work for one '|' delimited pattern - * - * Returned Value: - * Returns 1 (match) or 0 (no-match). - * - ****************************************************************************/ - -static int match_one(const char *pattern, int patlen, const char *string) -{ - const char *p; - int pl; - int i; - - for (p = pattern; p - pattern < patlen; p++, string++) - { - if (*p == '?' && *string != '\0') - { - continue; - } - - if (*p == '*') - { - p++; - if (*p == '*') - { - /* Double-wildcard matches anything. */ - - p++; - i = strlen(string); - } - else - { - /* Single-wildcard matches anything but slash. */ - - i = strcspn(string, "/"); - } - - pl = patlen - (p - pattern); - for (; i >= 0; i--) - { - if (match_one(p, pl, &(string[i]))) - { - return 1; - } - } - return 0; - } - - if (*p != *string) - { - return 0; - } - } - - if (*string == '\0') - { - return 1; - } - return 0; -} - -/**************************************************************************** - * Public Functions - ****************************************************************************/ - -/**************************************************************************** - * Name: match - * - * Description: - * Simple shell-style filename pattern matcher written by Jef Poskanzer - * This pattern matcher only handles '?', '*' and '**', and multiple - * patterns separated by '|'. - * - * Returned Value: - * Returns 1 (match) or 0 (no-match). - * - ****************************************************************************/ - -int match(const char *pattern, const char *string) -{ - const char *or; - - for (;;) - { - or = strchr(pattern, '|'); - if (or == (char *)0) - { - return match_one(pattern, strlen(pattern), string); - } - - if (match_one(pattern, or - pattern, string)) - { - return 1; - } - - pattern = or + 1; - } -} - diff --git a/nuttx/lib/misc/lib_sendfile.c b/nuttx/lib/misc/lib_sendfile.c deleted file mode 100644 index a82eb325e..000000000 --- a/nuttx/lib/misc/lib_sendfile.c +++ /dev/null @@ -1,297 +0,0 @@ -/************************************************************************ - * lib/misc/lib_streamsem.c - * - * Copyright (C) 2007, 2009, 2011 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 <sys/sendfile.h> -#include <stdbool.h> -#include <stdlib.h> -#include <unistd.h> -#include <errno.h> - -#if CONFIG_NSOCKET_DESCRIPTORS > 0 || CONFIG_NFILE_DESCRIPTORS > 0 - -/************************************************************************ - * Private types - ************************************************************************/ - -/************************************************************************ - * Private Variables - ************************************************************************/ - -/************************************************************************ - * Public Variables - ************************************************************************/ - -/************************************************************************ - * Private Functions - ************************************************************************/ - -/************************************************************************ - * Public Functions - ************************************************************************/ - -/************************************************************************ - * Name: sendfile - * - * Description: - * sendfile() copies data between one file descriptor and another. - * sendfile() basically just wraps a sequence of reads() and writes() - * to perform a copy. It serves a purpose in systems where there is - * a penalty for copies to between user and kernal space, but really - * nothing in NuttX but provide some Linux compatible (and adding - * another 'almost standard' interface). - * - * NOTE: This interface is *not* specified in POSIX.1-2001, or other - * standards. The implementation here is very similar to the Linux - * sendfile interface. Other UNIX systems implement sendfile() with - * different semantics and prototypes. sendfile() should not be used - * in portable programs. - * - * Input Parmeters: - * infd - A file (or socket) descriptor opened for reading - * outfd - A descriptor opened for writing. - * offset - If 'offset' is not NULL, then it points to a variable - * holding the file offset from which sendfile() will start - * reading data from 'infd'. When sendfile() returns, this - * variable will be set to the offset of the byte following - * the last byte that was read. If 'offset' is not NULL, - * then sendfile() does not modify the current file offset of - * 'infd'; otherwise the current file offset is adjusted to - * reflect the number of bytes read from 'infd.' - * - * If 'offset' is NULL, then data will be read from 'infd' - * starting at the current file offset, and the file offset - * will be updated by the call. - * count - The number of bytes to copy between the file descriptors. - * - * Returned Value: - * If the transfer was successful, the number of bytes written to outfd is - * returned. On error, -1 is returned, and errno is set appropriately. - * There error values are those returned by read() or write() plus: - * - * EINVAL - Bad input parameters. - * ENOMEM - Could not allocated an I/O buffer - * - ************************************************************************/ - -ssize_t sendfile(int outfd, int infd, off_t *offset, size_t count) -{ - FAR uint8_t *iobuffer; - FAR uint8_t *wrbuffer; - off_t startpos = 0; - ssize_t nbytesread; - ssize_t nbyteswritten; - size_t ntransferred; - bool endxfr; - - /* Get the current file position. */ - - if (offset) - { - /* Use lseek to get the current file position */ - - startpos = lseek(infd, 0, SEEK_CUR); - if (startpos == (off_t)-1) - { - return ERROR; - } - - /* Use lseek again to set the new file position */ - - if (lseek(infd, *offset, SEEK_SET) == (off_t)-1) - { - return ERROR; - } - } - - /* Allocate an I/O buffer */ - - iobuffer = (FAR void *)malloc(CONFIG_LIB_SENDFILE_BUFSIZE); - if (!iobuffer) - { - set_errno(ENOMEM); - return ERROR; - } - - /* Now transfer 'count' bytes from the infd to the outfd */ - - for (ntransferred = 0, endxfr = false; ntransferred < count && !endxfr; ) - { - /* Loop until the read side of the transfer comes to some conclusion */ - - do - { - /* Read a buffer of data from the infd */ - - nbytesread = read(infd, iobuffer, CONFIG_LIB_SENDFILE_BUFSIZE); - - /* Check for end of file */ - - if (nbytesread == 0) - { - /* End of file. Break out and return current number of bytes - * transferred. - */ - - endxfr = true; - break; - } - - /* Check for a read ERROR. EINTR is a special case. This function - * should break out and return an error if EINTR is returned and - * no data has been transferred. But what should it do if some - * data has been transferred? I suppose just continue? - */ - - else if (nbytesread < 0) - { - /* EINTR is not an error (but will still stop the copy) */ - -#ifndef CONFIG_DISABLE_SIGNALS - if (errno != EINTR || ntransferred == 0) -#endif - { - /* Read error. Break out and return the error condition. */ - - ntransferred = ERROR; - endxfr = true; - break; - } - } - } - while (nbytesread < 0); - - /* Was anything read? */ - - if (!endxfr) - { - /* Yes.. Loop until the read side of the transfer comes to some - * conclusion. - */ - - wrbuffer = iobuffer; - do - { - /* Write the buffer of data to the outfd */ - - nbyteswritten = write(outfd, wrbuffer, nbytesread); - - /* Check for a complete (or parial) write. write() should not - * return zero. - */ - - if (nbyteswritten >= 0) - { - /* Advance the buffer pointer and decrement the number of bytes - * remaining in the iobuffer. Typically, nbytesread will now - * be zero. - */ - - wrbuffer += nbyteswritten; - nbytesread -= nbyteswritten; - - /* Increment the total number of bytes successfully transferred. */ - - ntransferred += nbyteswritten; - } - - /* Otherwise an error occurred */ - - else - { - /* Check for a read ERROR. EINTR is a special case. This - * function should break out and return an error if EINTR - * is returned and no data has been transferred. But what - * should it do if some data has been transferred? I - * suppose just continue? - */ - -#ifndef CONFIG_DISABLE_SIGNALS - if (errno != EINTR || ntransferred == 0) -#endif - { - /* Write error. Break out and return the error condition */ - - ntransferred = ERROR; - endxfr = true; - break; - } - } - } - while (nbytesread > 0); - } - } - - /* Release the I/O buffer */ - - free(iobuffer); - - /* Return the current file position */ - - if (offset) - { - /* Use lseek to get the current file position */ - - off_t curpos = lseek(infd, 0, SEEK_CUR); - if (curpos == (off_t)-1) - { - return ERROR; - } - - /* Return the current file position */ - - *offset = curpos; - - /* Use lseek again to restore the original file position */ - - if (lseek(infd, startpos, SEEK_SET) == (off_t)-1) - { - return ERROR; - } - } - - /* Finally return the number of bytes actually transferred (or ERROR - * if any failure occurred). - */ - - return ntransferred; -} - -#endif /* CONFIG_NSOCKET_DESCRIPTORS > 0 || CONFIG_NFILE_DESCRIPTORS > 0 */ diff --git a/nuttx/lib/misc/lib_streamsem.c b/nuttx/lib/misc/lib_streamsem.c deleted file mode 100644 index fdf494e75..000000000 --- a/nuttx/lib/misc/lib_streamsem.c +++ /dev/null @@ -1,90 +0,0 @@ -/************************************************************************ - * lib/misc/lib_streamsem.c - * - * Copyright (C) 2007, 2009, 2011 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 <stdlib.h> -#include <string.h> -#include <assert.h> -#include <semaphore.h> -#include <errno.h> -#include <nuttx/fs/fs.h> - -#include "lib_internal.h" - -/************************************************************************ - * Private types - ************************************************************************/ - -/************************************************************************ - * Private Variables - ************************************************************************/ - -/************************************************************************ - * Public Variables - ************************************************************************/ - -/************************************************************************ - * Private Functions - ************************************************************************/ - -/************************************************************************ - * Public Functions - ************************************************************************/ - -void stream_semtake(FAR struct streamlist *list) -{ - /* Take the semaphore (perhaps waiting) */ - - while (sem_wait(&list->sl_sem) != 0) - { - /* The only case that an error should occr here is if - * the wait was awakened by a signal. - */ - - ASSERT(get_errno() == EINTR); - } -} - -void stream_semgive(FAR struct streamlist *list) -{ - sem_post(&list->sl_sem); -} - - |