Browse Source

sys: posix: switch to xtimer for sleep/usleep

cc430
Kaspar Schleiser 7 years ago
parent
commit
8a61ef4c75
  1. 3
      Makefile.dep
  2. 119
      sys/posix/include/unistd.h
  3. 17
      sys/posix/unistd.c

3
Makefile.dep

@ -283,8 +283,7 @@ ifneq (,$(filter uart_stdio,$(USEMODULE)))
endif
ifneq (,$(filter posix,$(USEMODULE)))
USEMODULE += timex
USEMODULE += vtimer
USEMODULE += xtimer
endif
ifneq (,$(filter posix_semaphore,$(USEMODULE)))

119
sys/posix/include/unistd.h

@ -1,119 +0,0 @@
/*
* Copyright (C) 2013 Freie Universität Berlin
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/
/**
* @addtogroup posix
* @{
*/
/**
* @file
* @brief standard symbolic constants and types
* @see <a href="http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/unistd.h.html">
* The Open Group Base Specifications Issue 7, <unistd.h>
* </a>
*
* @author Martine Lenders <mlenders@inf.fu-berlin.de>
*/
#ifndef _UNISTD_H
#define _UNISTD_H
#include <stdint.h>
#include "timex.h"
#include "vtimer.h"
#ifdef __cplusplus
extern "C" {
#endif
#define STDIN_FILENO 0 ///< stdin file descriptor
#define STDOUT_FILENO 1 ///< stdout file descriptor
#define STDERR_FILENO 2 ///< stderr file descriptor
/**
* @brief Close a file descriptor.
* @details shall deallocate the file descriptor indicated by *fildes*. To
* deallocate means to make the file descriptor available for return
* by subsequent calls to open() or other functions that allocate file
* descriptors. All outstanding record locks owned by the process on
* the file associated with the file descriptor shall be removed (that
* is, unlocked).
*
* @see <a href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/close.html">
* The Open Group Base Specification Issue 7, close
* </a>
*
* @param[in] fildes The file descriptor to the file which is to close.
* @return Upon successful completion, 0 shall be returned; otherwise, -1
* shall be returned and errno set to indicate the error.
*/
int close(int fildes);
/**
* @name Microseconds data type
* @{
*/
#ifndef __USECONDS_T_TYPE
#if !(defined(__MACH__) || defined(__FreeBSD__))
typedef unsigned long __USECONDS_T_TYPE;
typedef __USECONDS_T_TYPE __useconds_t;
#else
#ifdef __MACH__
typedef __darwin_useconds_t __useconds_t;
#endif
#endif
#endif
typedef __useconds_t useconds_t;
/** @} */
/**
* @brief the caller will sleep for given amount of micro seconds
* @details The usleep() function will cause the calling thread to be
* suspended from execution until either the number of real-time microseconds
* specified by the argument useconds has elapsed or a signal is delivered to
* the calling thread and its action is to invoke a signal-catching function
* or to terminate the process. The suspension time may be longer than
* requested due to the scheduling of other activity by the system.
*
* @see <a href="http://pubs.opengroup.org/onlinepubs/7908799/xsh/usleep.html">
* The Open Group Base Specification Issue 2, usleep
* </a>
*
* @param useconds time to sleep in micro seconds
* @return 0 on success
*/
int usleep(useconds_t useconds);
/**
* @brief the caller will sleep for given amount of seconds
* @details The sleep() function shall cause the calling thread to be suspended
* from execution until either the number of realtime seconds
* specified by the argument seconds has elapsed or a signal is
* delivered to the calling thread and its action is to invoke a
* signal-catching function or to terminate the process. The
* suspension time may be longer than requested due to the scheduling
* of other activity by the system.
*
* @see <a href="http://pubs.opengroup.org/onlinepubs/009695399/functions/sleep.html">
* The Open Group Base Specification Issue 6, sleep
* </a>
*
* @param seconds time to sleep in seconds
* @return 0 on success
*/
unsigned int sleep(unsigned int seconds);
#ifdef __cplusplus
}
#endif
/**
* @}
*/
#endif /* _UNISTD_H */

17
sys/posix/unistd.c

@ -14,9 +14,9 @@
* @author Christian Mehlis <mehlis@inf.fu-berlin.de>
*/
#include <errno.h>
#include <unistd.h>
#include "fd.h"
#include "unistd.h"
int close(int fildes)
{
@ -37,21 +37,6 @@ int close(int fildes)
return 0;
}
int usleep(useconds_t useconds)
{
timex_t time = timex_set(0, useconds);
timex_normalize(&time);
vtimer_sleep(time);
return 0;
}
unsigned int sleep(unsigned int seconds)
{
timex_t time = timex_set(seconds, 0);
vtimer_sleep(time);
return 0;
}
/**
* @}
*/

Loading…
Cancel
Save