Update to use 64-bit timer when available

This commit is contained in:
Gregory Nutt
2016-01-21 11:54:26 -06:00
parent cb7bbdfed4
commit f348e68069
41 changed files with 182 additions and 165 deletions
+6 -6
View File
@@ -1,7 +1,7 @@
/****************************************************************************
* drivers/mmcsd/mmcsd_sdio.c
*
* Copyright (C) 2009-2013 Gregory Nutt. All rights reserved.
* Copyright (C) 2009-2013, 2016 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@@ -1120,10 +1120,10 @@ static int mmcsd_eventwait(FAR struct mmcsd_state_s *priv,
static int mmcsd_transferready(FAR struct mmcsd_state_s *priv)
{
uint32_t starttime;
uint32_t elapsed;
systime_t starttime;
systime_t elapsed;
uint32_t r1;
int ret;
int ret;
/* First, check if the card has been removed. */
@@ -2714,9 +2714,9 @@ static int mmcsd_sdinitialize(FAR struct mmcsd_state_s *priv)
static int mmcsd_cardidentify(FAR struct mmcsd_state_s *priv)
{
uint32_t response;
uint32_t start;
uint32_t elapsed;
uint32_t sdcapacity = MMCSD_ACMD41_STDCAPACITY;
systime_t start;
systime_t elapsed;
int ret;
/* Assume failure to identify the card */
+9 -9
View File
@@ -443,8 +443,8 @@ static int mmcsd_waitready(FAR struct mmcsd_slot_s *slot)
{
FAR struct spi_dev_s *spi = slot->spi;
uint8_t response;
uint32_t start;
uint32_t elapsed;
systime_t start;
systime_t elapsed;
/* Wait until the card is no longer busy (up to 500MS) */
@@ -548,8 +548,8 @@ static uint32_t mmcsd_sendcmd(FAR struct mmcsd_slot_s *slot,
case MMCSD_CMDRESP_R1B:
{
uint32_t busy = 0;
uint32_t start;
uint32_t elapsed;
systime_t start;
systime_t elapsed;
start = START_TIME;
do
@@ -963,9 +963,9 @@ static int mmcsd_recvblock(FAR struct mmcsd_slot_s *slot, uint8_t *buffer,
int nbytes)
{
FAR struct spi_dev_s *spi = slot->spi;
uint32_t start;
uint32_t elapsed;
uint8_t token;
systime_t start;
systime_t elapsed;
uint8_t token;
/* Wait up to the maximum to receive a valid data token. taccess is the
* time from when the command is sent until the first byte of data is
@@ -1579,8 +1579,8 @@ static int mmcsd_mediainitialize(FAR struct mmcsd_slot_s *slot)
FAR struct spi_dev_s *spi = slot->spi;
uint8_t csd[16];
uint32_t result = MMCSD_SPIR1_IDLESTATE;
uint32_t start;
uint32_t elapsed;
systime_t start;
systime_t elapsed;
int i;
int j;
+4 -4
View File
@@ -417,8 +417,8 @@ static int sst39vf_chiperase(FAR struct sst39vf_dev_s *priv)
{
#if 0
struct sst39vf_wrinfo_s wrinfo;
uint32_t start;
uint32_t elapsed;
systime_t start;
systime_t elapsed;
#endif
/* Send the sequence to erase the chip */
@@ -488,8 +488,8 @@ static int sst39vf_sectorerase(FAR struct sst39vf_dev_s *priv,
{
struct sst39vf_wrinfo_s wrinfo;
#if 0
uint32_t start;
uint32_t elapsed;
systime_t start;
systime_t elapsed;
#endif
/* Set up the sector address */
+3 -3
View File
@@ -1,7 +1,7 @@
/****************************************************************************
* drivers/net/enc28j60.c
*
* Copyright (C) 2010-2012, 2014-2015 Gregory Nutt. All rights reserved.
* Copyright (C) 2010-2012, 2014-2016 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* References:
@@ -750,8 +750,8 @@ static void enc_wrbreg(FAR struct enc_driver_s *priv, uint8_t ctrlreg,
static int enc_waitbreg(FAR struct enc_driver_s *priv, uint8_t ctrlreg,
uint8_t bits, uint8_t value)
{
uint32_t start = clock_systimer();
uint32_t elapsed;
systime_t start = clock_systimer();
systime_t elapsed;
uint8_t rddata;
/* Loop until the exit condition is met */
+5 -5
View File
@@ -679,8 +679,8 @@ static void enc_wrreg(FAR struct enc_driver_s *priv, uint16_t ctrlreg,
static int enc_waitreg(FAR struct enc_driver_s *priv, uint16_t ctrlreg,
uint16_t bits, uint16_t value)
{
uint32_t start = clock_systimer();
uint32_t elapsed;
systime_t start = clock_systimer();
systime_t elapsed;
uint16_t rddata;
/* Loop until the exit condition is met */
@@ -1533,7 +1533,7 @@ static void enc_rxdispatch(FAR struct enc_driver_s *priv)
arp_ipin(&priv->dev);
ret = ipv4_input(&priv->dev);
if (ret == OK || (clock_systimer() - descr->ts) > ENC_RXTIMEOUT)
if (ret == OK || (clock_systimer() - (systime_t)descr->ts) > ENC_RXTIMEOUT)
{
/* If packet has been successfully processed or has timed out,
* free it.
@@ -1580,7 +1580,7 @@ static void enc_rxdispatch(FAR struct enc_driver_s *priv)
ret = ipv6_input(&priv->dev);
if (ret == OK || (clock_systimer() - descr->ts) > ENC_RXTIMEOUT)
if (ret == OK || (clock_systimer() - (systime_t)descr->ts) > ENC_RXTIMEOUT)
{
/* If packet has been successfully processed or has timed out,
* free it.
@@ -1728,7 +1728,7 @@ static void enc_pktif(FAR struct enc_driver_s *priv)
/* Set current timestamp */
descr->ts = clock_systimer();
descr->ts = (uint32_t)clock_systimer();
/* Store the start address of the frame without the enc's header */
+2 -2
View File
@@ -434,8 +434,8 @@ static void slip_txtask(int argc, FAR char *argv[])
FAR struct slip_driver_s *priv;
unsigned int index = *(argv[1]) - '0';
net_lock_t flags;
unsigned int msec_start;
unsigned int msec_now;
systime_t msec_start;
systime_t msec_now;
unsigned int hsec;
ndbg("index: %d\n", index);
+3 -2
View File
@@ -45,8 +45,9 @@
#include <semaphore.h>
#include <queue.h>
#include <nuttx/power/pm.h>
#include <nuttx/clock.h>
#include <nuttx/wqueue.h>
#include <nuttx/power/pm.h>
#ifdef CONFIG_PM
@@ -136,7 +137,7 @@ struct pm_global_s
/* stime - The time (in ticks) at the start of the current time slice */
uint32_t stime;
systime_t stime;
/* This semaphore manages mutually exclusive access to the power management
* registry. It must be initialized to the value 1.
+1 -1
View File
@@ -103,7 +103,7 @@
void pm_activity(int priority)
{
uint32_t now;
systime_t now;
uint32_t accum;
irqstate_t flags;
+2 -2
View File
@@ -1,7 +1,7 @@
/****************************************************************************
* drivers/power/pm_checkstate.c
*
* Copyright (C) 2011-2012 Gregory Nutt. All rights reserved.
* Copyright (C) 2011-2012, 2016 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@@ -108,7 +108,7 @@
enum pm_state_e pm_checkstate(void)
{
uint32_t now;
systime_t now;
irqstate_t flags;
/* Check for the end of the current time slice. This must be performed
+7 -20
View File
@@ -212,23 +212,16 @@ static ssize_t uptime_read(FAR struct file *filep, FAR char *buffer,
size_t linesize;
off_t offset;
ssize_t ret;
#ifdef CONFIG_SYSTEM_TIME64
uint64_t ticktime;
#if !defined(CONFIG_HAVE_DOUBLE) || !defined(CONFIG_LIBC_FLOATINGPOINT)
uint64_t sec;
#endif
#else
uint32_t ticktime;
#if !defined(CONFIG_HAVE_DOUBLE) || !defined(CONFIG_LIBC_FLOATINGPOINT)
uint32_t sec;
#endif
#endif
systime ticktime;
#if defined(CONFIG_HAVE_DOUBLE) && defined(CONFIG_LIBC_FLOATINGPOINT)
double now;
#else
# if defined(CONFIG_SYSTEM_TIME64)
uint64_t sec;
# else
uint32_t sec;
# endif
unsigned int remainder;
unsigned int csec;
#endif
@@ -249,15 +242,9 @@ static ssize_t uptime_read(FAR struct file *filep, FAR char *buffer,
if (filep->f_pos == 0)
{
#ifdef CONFIG_SYSTEM_TIME64
/* 64-bit timer */
ticktime = clock_systimer64();
#else
/* 32-bit timer */
/* System time */
ticktime = clock_systimer();
#endif
#if defined(CONFIG_HAVE_DOUBLE) && defined(CONFIG_LIBC_FLOATINGPOINT)
/* Convert the system up time to a seconds + hundredths of seconds string */
+1 -1
View File
@@ -1,7 +1,7 @@
/****************************************************************************
* fs/vfs/fs_poll.c
*
* Copyright (C) 2008-2009, 2012-2015 Gregory Nutt. All rights reserved.
* Copyright (C) 2008-2009, 2012-2016 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
+33 -16
View File
@@ -1,7 +1,8 @@
/****************************************************************************
* include/nuttx/clock.h
*
* Copyright (C) 2007-2009, 2011-2012, 2014 Gregory Nutt. All rights reserved.
* Copyright (C) 2007-2009, 2011-2012, 2014, 2016 Gregory Nutt.
All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@@ -164,6 +165,14 @@
#define TICK2DSEC(tick) (((tick)+(TICK_PER_DSEC/2))/TICK_PER_DSEC) /* Rounds */
#define TICK2SEC(tick) (((tick)+(TICK_PER_SEC/2))/TICK_PER_SEC) /* Rounds */
/* Select the access to the system timer using its natural with */
#ifdef CONFIG_SYSTEM_TIME64
# define clock_systimer() clock_systimer64()
#else
# define clock_systimer() clock_systimer32()
#endif
/****************************************************************************
* Public Types
****************************************************************************/
@@ -177,10 +186,26 @@ struct cpuload_s
};
#endif
/* This type is the natural with of the system timer */
#ifdef CONFIG_SYSTEM_TIME64
typedef uint64_t systime_t;
#else
typedef uint32_t systime_t;
#endif
/****************************************************************************
* Public Data
****************************************************************************/
#ifdef __cplusplus
#define EXTERN extern "C"
extern "C"
{
#else
#define EXTERN extern
#endif
/* Access to raw system clock ***********************************************/
/* Direct access to the system timer/counter is supported only if (1) the
* system timer counter is available (i.e., we are not configured to use
@@ -191,14 +216,14 @@ struct cpuload_s
#ifdef __HAVE_KERNEL_GLOBALS
# ifdef CONFIG_SYSTEM_TIME64
extern volatile uint64_t g_system_timer;
#define clock_systimer() (uint32_t)(g_system_timer & 0x00000000ffffffff)
EXTERN volatile uint64_t g_system_timer;
#define clock_systimer32() (uint32_t)(g_system_timer & 0x00000000ffffffff)
#define clock_systimer64() g_system_timer
# else
extern volatile uint32_t g_system_timer;
#define clock_systimer() g_system_timer
EXTERN volatile uint32_t g_system_timer;
#define clock_systimer32() g_system_timer
# endif
#endif
@@ -207,14 +232,6 @@ extern volatile uint32_t g_system_timer;
* Public Function Prototypes
****************************************************************************/
#ifdef __cplusplus
#define EXTERN extern "C"
extern "C"
{
#else
#define EXTERN extern
#endif
/****************************************************************************
* Function: clock_synchronize
*
@@ -248,7 +265,7 @@ void clock_synchronize(void);
#endif
/****************************************************************************
* Function: clock_systimer
* Function: clock_systimer32
*
* Description:
* Return the current value of the 32-bit system timer counter. Indirect
@@ -268,9 +285,9 @@ void clock_synchronize(void);
#ifndef __HAVE_KERNEL_GLOBALS
# ifdef CONFIG_SYSTEM_TIME64
# define clock_systimer() (uint32_t)(clock_systimer64() & 0x00000000ffffffff)
# define clock_systimer32() (uint32_t)(clock_systimer64() & 0x00000000ffffffff)
# else
uint32_t clock_systimer(void);
uint32_t clock_systimer32(void);
# endif
#endif
+10 -9
View File
@@ -1,7 +1,7 @@
/********************************************************************************
* include/nuttx/sched.h
*
* Copyright (C) 2007-2015 Gregory Nutt. All rights reserved.
* Copyright (C) 2007-2016 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@@ -51,6 +51,7 @@
#include <mqueue.h>
#include <time.h>
#include <nuttx/clock.h>
#include <nuttx/irq.h>
#include <nuttx/wdog.h>
#include <nuttx/mm/shm.h>
@@ -273,14 +274,14 @@ struct replenishment_s
struct sporadic_s
{
bool suspended; /* Thread is currently suspended */
uint8_t hi_priority; /* Sporadic high priority */
uint8_t low_priority; /* Sporadic low priority */
uint8_t max_repl; /* Maximum number of replenishments */
uint8_t nrepls; /* Number of active replenishments */
uint32_t repl_period; /* Sporadic replenishment period */
uint32_t budget; /* Sporadic execution budget period */
uint32_t eventtime; /* Time thread suspended or [re-]started */
bool suspended; /* Thread is currently suspended */
uint8_t hi_priority; /* Sporadic high priority */
uint8_t low_priority; /* Sporadic low priority */
uint8_t max_repl; /* Maximum number of replenishments */
uint8_t nrepls; /* Number of active replenishments */
uint32_t repl_period; /* Sporadic replenishment period */
uint32_t budget; /* Sporadic execution budget period */
systime_t eventtime; /* Time thread suspended or [re-]started */
/* This is the last interval timer activated */
+3 -2
View File
@@ -1,7 +1,7 @@
/****************************************************************************
* include/nuttx/semaphore.h
*
* Copyright (C) 2014-2015 Gregory Nutt. All rights reserved.
* Copyright (C) 2014-2016 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@@ -44,6 +44,7 @@
#include <semaphore.h>
#include <nuttx/clock.h>
#include <nuttx/fs/fs.h>
/****************************************************************************
@@ -110,7 +111,7 @@ extern "C"
*
****************************************************************************/
int sem_tickwait(FAR sem_t *sem, uint32_t start, uint32_t delay);
int sem_tickwait(FAR sem_t *sem, systime_t start, uint32_t delay);
#undef EXTERN
#ifdef __cplusplus
+5 -3
View File
@@ -47,6 +47,8 @@
#include <semaphore.h>
#include <queue.h>
#include <nuttx/clock.h>
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
@@ -290,8 +292,8 @@ struct work_s
struct dq_entry_s dq; /* Implements a doubly linked list */
worker_t worker; /* Work callback */
FAR void *arg; /* Callback argument */
uint32_t qtime; /* Time work queued */
uint32_t delay; /* Delay until work performed */
systime_t qtime; /* Time work queued */
systime_t delay; /* Delay until work performed */
};
/****************************************************************************
@@ -359,7 +361,7 @@ int work_usrstart(void);
****************************************************************************/
int work_queue(int qid, FAR struct work_s *work, worker_t worker,
FAR void *arg, uint32_t delay);
FAR void *arg, systime_t delay);
/****************************************************************************
* Name: work_cancel
+5 -1
View File
@@ -211,7 +211,11 @@
* NuttX configuration.
*/
#define SYS_clock_systimer (__SYS_clock+0)
#ifdef CONFIG_SYSTEM_TIME64
# define SYS_clock_systimer64 (__SYS_clock+0)
#endif
# define SYS_clock_systimer32 (__SYS_clock+0)
#endif
#define SYS_clock_getres (__SYS_clock+1)
#define SYS_clock_gettime (__SYS_clock+2)
#define SYS_clock_settime (__SYS_clock+3)
+6 -6
View File
@@ -1,7 +1,7 @@
/****************************************************************************
* libc/wqueue/work_usrthread.c
*
* Copyright (C) 2009-2015 Gregory Nutt. All rights reserved.
* Copyright (C) 2009-2016 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@@ -122,11 +122,11 @@ void work_process(FAR struct usr_wqueue_s *wqueue)
volatile FAR struct work_s *work;
worker_t worker;
FAR void *arg;
uint32_t elapsed;
uint32_t remaining;
uint32_t stick;
uint32_t ctick;
uint32_t next;
systime_t elapsed;
systime_t remaining;
systime_t stick;
systime_t ctick;
systime_t next;
int ret;
/* Then process queued work. Lock the work queue while we process items
+3 -3
View File
@@ -83,8 +83,8 @@ struct icmp_ping_s
FAR struct devif_callback_s *png_cb; /* Reference to callback instance */
sem_t png_sem; /* Use to manage the wait for the response */
uint32_t png_time; /* Start time for determining timeouts */
uint32_t png_ticks; /* System clock ticks to wait */
systime_t png_time; /* Start time for determining timeouts */
systime_t png_ticks; /* System clock ticks to wait */
int png_result; /* 0: success; <0:negated errno on fail */
in_addr_t png_addr; /* The peer to be ping'ed */
uint16_t png_id; /* Used to match requests with replies */
@@ -124,7 +124,7 @@ struct icmp_ping_s
static inline int ping_timeout(FAR struct icmp_ping_s *pstate)
{
uint32_t elapsed = clock_systimer() - pstate->png_time;
systime_t elapsed = clock_systimer() - pstate->png_time;
if (elapsed >= pstate->png_ticks)
{
return TRUE;
+3 -3
View File
@@ -86,8 +86,8 @@ struct icmpv6_ping_s
FAR struct devif_callback_s *png_cb; /* Reference to callback instance */
sem_t png_sem; /* Use to manage the wait for the response */
uint32_t png_time; /* Start time for determining timeouts */
uint32_t png_ticks; /* System clock ticks to wait */
systime_t png_time; /* Start time for determining timeouts */
systime_t png_ticks; /* System clock ticks to wait */
int png_result; /* 0: success; <0:negated errno on fail */
net_ipv6addr_t png_addr; /* The peer to be ping'ed */
uint16_t png_id; /* Used to match requests with replies */
@@ -127,7 +127,7 @@ struct icmpv6_ping_s
static inline int ping_timeout(FAR struct icmpv6_ping_s *pstate)
{
uint32_t elapsed = clock_systimer() - pstate->png_time;
systime_t elapsed = clock_systimer() - pstate->png_time;
if (elapsed >= pstate->png_ticks)
{
return TRUE;
+2 -1
View File
@@ -49,6 +49,7 @@
#include <net/ethernet.h>
#include <nuttx/clock.h>
#include <nuttx/net/ip.h>
#ifdef CONFIG_NET_IPv6
@@ -100,7 +101,7 @@ extern struct neighbor_entry g_neighbors[CONFIG_NET_IPv6_NCONF_ENTRIES];
/* This is the time, in clock ticks, of the last poll */
extern uint32_t g_neighbor_polltime;
extern systime_t g_neighbor_polltime;
/****************************************************************************
* Public Function Prototypes
+1 -1
View File
@@ -58,7 +58,7 @@ struct neighbor_entry g_neighbors[CONFIG_NET_IPv6_NCONF_ENTRIES];
/* This is the time, in clock ticks, of the last poll */
uint32_t g_neighbor_polltime;
systime_t g_neighbor_polltime;
/****************************************************************************
* Public Functions
+3 -3
View File
@@ -75,8 +75,8 @@
void neighbor_periodic(void)
{
uint32_t now;
uint32_t ticks;
systime_t now;
systime_t ticks;
uint32_t hsecs;
int i;
@@ -84,7 +84,7 @@ void neighbor_periodic(void)
now = clock_systimer();
ticks = now - g_neighbor_polltime;
hsecs = TICK2HSEC(ticks);
hsecs = (uint32_t)TICK2HSEC(ticks);
/* Reset the time of the last poll */
+1 -1
View File
@@ -82,7 +82,7 @@ struct tcp_close_s
FAR struct socket *cl_psock; /* Reference to the TCP socket */
sem_t cl_sem; /* Signals disconnect completion */
int cl_result; /* The result of the close */
uint32_t cl_start; /* Time close started (in ticks) */
systime_t cl_start; /* Time close started (in ticks) */
#endif
};
#endif
+2 -2
View File
@@ -2,7 +2,7 @@
* net/socket/net_sendfile.c
*
* Copyright (C) 2013 UVC Ingenieure. All rights reserved.
* Copyright (C) 2007-2015 Gregory Nutt. All rights reserved.
* Copyright (C) 2007-2016 Gregory Nutt. All rights reserved.
* Authors: Gregory Nutt <gnutt@nuttx.org>
* Max Holtzberg <mh@uvc.de>
*
@@ -103,7 +103,7 @@ struct sendfile_s
uint32_t snd_isn; /* Initial sequence number */
uint32_t snd_acked; /* The number of bytes acked */
#ifdef CONFIG_NET_SOCKOPTS
uint32_t snd_time; /* Last send time for determining timeout */
systime_t snd_time; /* Last send time for determining timeout */
#endif
};
+3 -3
View File
@@ -69,10 +69,10 @@
*
****************************************************************************/
int net_timeo(uint32_t start_time, socktimeo_t timeo)
int net_timeo(systime_t start_time, socktimeo_t timeo)
{
uint32_t timeo_ticks = DSEC2TICK(timeo);
uint32_t elapsed = clock_systimer() - start_time;
systime_t timeo_ticks = DSEC2TICK(timeo);
systime_t elapsed = clock_systimer() - start_time;
if (elapsed >= timeo_ticks)
{
+2 -2
View File
@@ -1,7 +1,7 @@
/****************************************************************************
* net/socket/recvfrom.c
*
* Copyright (C) 2007-2009, 2011-2015 Gregory Nutt. All rights reserved.
* Copyright (C) 2007-2009, 2011-2016 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@@ -93,7 +93,7 @@ struct recvfrom_s
{
FAR struct socket *rf_sock; /* The parent socket structure */
#ifdef CONFIG_NET_SOCKOPTS
uint32_t rf_starttime; /* rcv start time for determining timeout */
systime_t rf_starttime; /* rcv start time for determining timeout */
#endif
FAR struct devif_callback_s *rf_cb; /* Reference to callback instance */
sem_t rf_sem; /* Semaphore signals recv completion */
+2 -1
View File
@@ -47,6 +47,7 @@
#include <stdint.h>
#include <time.h>
#include <nuttx/clock.h>
#include <nuttx/net/net.h>
/****************************************************************************
@@ -345,7 +346,7 @@ int net_close(int sockfd);
****************************************************************************/
#ifdef CONFIG_NET_SOCKOPTS
int net_timeo(uint32_t start_time, socktimeo_t timeo);
int net_timeo(systime_t start_time, socktimeo_t timeo);
#endif
/****************************************************************************
+2 -2
View File
@@ -1,7 +1,7 @@
/****************************************************************************
* net/tcp/tcp_send_unbuffered.c
*
* Copyright (C) 2007-2014 Gregory Nutt. All rights reserved.
* Copyright (C) 2007-2014, 2016 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@@ -103,7 +103,7 @@ struct send_s
uint32_t snd_isn; /* Initial sequence number */
uint32_t snd_acked; /* The number of bytes acked */
#ifdef CONFIG_NET_SOCKOPTS
uint32_t snd_time; /* Last send time for determining timeout */
systime_t snd_time; /* Last send time for determining timeout */
#endif
#if defined(CONFIG_NET_TCP_SPLIT)
bool snd_odd; /* True: Odd packet in pair transaction */
+2 -2
View File
@@ -1,7 +1,7 @@
/****************************************************************************
* net/udp/udp_psock_sendto.c
*
* Copyright (C) 2007-2009, 2011-2015 Gregory Nutt. All rights reserved.
* Copyright (C) 2007-2009, 2011-2016 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@@ -99,7 +99,7 @@ struct sendto_s
FAR struct socket *st_sock; /* Points to the parent socket structure */
#endif
#ifdef CONFIG_NET_SENDTO_TIMEOUT
uint32_t st_time; /* Last send time for determining timeout */
systime_t st_time; /* Last send time for determining timeout */
#endif
FAR struct devif_callback_s *st_cb; /* Reference to callback instance */
sem_t st_sem; /* Semaphore signals sendto completion */
+1 -1
View File
@@ -147,7 +147,7 @@ config SYSTEM_TIME64
USEC_PER_TICK, typically at 100Hz. The count at any given time is
then the "uptime" in units of system timer ticks. By default, the
system time is 32-bits wide. Those defaults provide a range of about
13.6 years which is probably a sufficient range for "uptime".
497 days which is probably a sufficient range for "uptime".
However, if the system timer rate is significantly higher than 100Hz
and/or if a very long "uptime" is required, then this option can be
+4 -4
View File
@@ -1,7 +1,7 @@
/****************************************************************************
* sched/clock/clock_systimer.c
*
* Copyright (C) 2011, 2014-2015 Gregory Nutt. All rights reserved.
* Copyright (C) 2011, 2014-2016 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@@ -51,7 +51,7 @@
****************************************************************************/
/* See nuttx/clock.h */
#undef clock_systimer
#undef cloc_systimer32
#undef clock_systimer64
/****************************************************************************
@@ -63,7 +63,7 @@
****************************************************************************/
/****************************************************************************
* Name: clock_systimer
* Name: cloc_systimer32
*
* Description:
* Return the current value of the 32-bit system timer counter
@@ -78,7 +78,7 @@
*
****************************************************************************/
uint32_t clock_systimer(void)
uint32_t cloc_systimer32(void)
{
#ifdef CONFIG_SCHED_TICKLESS
struct timespec ts;
+1 -1
View File
@@ -110,7 +110,7 @@ static int g_fillresult;
*/
#ifdef CONFIG_PAGING_TIMEOUT_TICKS
status uint32_t g_starttime;
static systime_t g_starttime;
#endif
#endif
+2 -2
View File
@@ -1,7 +1,7 @@
/****************************************************************************
* sched/sched/sched_sporadic.c
*
* Copyright (C) 2015 Gregory Nutt. All rights reserved.
* Copyright (C) 2015-2016 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@@ -975,9 +975,9 @@ int sched_sporadic_resume(FAR struct tcb_s *tcb)
{
FAR struct sporadic_s *sporadic;
FAR struct replenishment_s *repl;
systime_t now;
uint32_t unrealized;
uint32_t last;
uint32_t now;
DEBUGASSERT(tcb && tcb->sporadic);
sporadic = tcb->sporadic;
+3 -3
View File
@@ -1,7 +1,7 @@
/****************************************************************************
* sched/semaphore/sem_tickdwait.c
*
* Copyright (C) 2015 Gregory Nutt. All rights reserved.
* Copyright (C) 2015-2016 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@@ -80,11 +80,11 @@
*
****************************************************************************/
int sem_tickwait(FAR sem_t *sem, uint32_t start, uint32_t delay)
int sem_tickwait(FAR sem_t *sem, systime_t start, uint32_t delay)
{
FAR struct tcb_s *rtcb = (FAR struct tcb_s *)g_readytorun.head;
irqstate_t flags;
uint32_t elapsed;
systime_t elapsed;
int ret;
DEBUGASSERT(sem != NULL && up_interrupt_context() == false &&
+4 -4
View File
@@ -1,7 +1,7 @@
/****************************************************************************
* sched/signal/sig/nanosleep.c
*
* Copyright (C) 2013 Gregory Nutt. All rights reserved.
* Copyright (C) 2013, 2016 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@@ -124,7 +124,7 @@
int nanosleep(FAR const struct timespec *rqtp, FAR struct timespec *rmtp)
{
irqstate_t flags;
uint32_t starttick;
systime_t starttick;
sigset_t set;
struct siginfo value;
int errval;
@@ -183,8 +183,8 @@ int nanosleep(FAR const struct timespec *rqtp, FAR struct timespec *rmtp)
if (rmtp)
{
uint32_t elapsed;
uint32_t remaining;
systime_t elapsed;
systime_t remaining;
int ticks;
/* First get the number of clock ticks that we were requested to
+7 -23
View File
@@ -1,7 +1,7 @@
/****************************************************************************
* libc/wqueue/work_process.c
*
* Copyright (C) 2009-2014 Gregory Nutt. All rights reserved.
* Copyright (C) 2009-2014, 2016 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@@ -72,22 +72,6 @@
# define MIN(a,b) ((a) < (b) ? (a) : (b))
#endif
/****************************************************************************
* Private Type Declarations
****************************************************************************/
/****************************************************************************
* Public Data
****************************************************************************/
/****************************************************************************
* Private Data
****************************************************************************/
/****************************************************************************
* Private Functions
****************************************************************************/
/****************************************************************************
* Public Functions
****************************************************************************/
@@ -109,17 +93,17 @@
*
****************************************************************************/
void work_process(FAR struct kwork_wqueue_s *wqueue, uint32_t period, int wndx)
void work_process(FAR struct kwork_wqueue_s *wqueue, systime_t period, int wndx)
{
volatile FAR struct work_s *work;
worker_t worker;
irqstate_t flags;
FAR void *arg;
uint32_t elapsed;
uint32_t remaining;
uint32_t stick;
uint32_t ctick;
uint32_t next;
systime_t elapsed;
systime_t remaining;
systime_t stick;
systime_t ctick;
systime_t next;
/* Then process queued work. We need to keep interrupts disabled while
* we process items in the work list.
+7 -5
View File
@@ -1,7 +1,7 @@
/****************************************************************************
* sched/wqueue/wqueue.h
*
* Copyright (C) 2014 Gregory Nutt. All rights reserved.
* Copyright (C) 2014, 2016 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@@ -46,6 +46,8 @@
#include <stdbool.h>
#include <queue.h>
#include <nuttx/clock.h>
#ifdef CONFIG_SCHED_WORKQUEUE
/****************************************************************************
@@ -72,7 +74,7 @@ struct kworker_s
struct kwork_wqueue_s
{
uint32_t delay; /* Delay between polling cycles (ticks) */
systime_t delay; /* Delay between polling cycles (ticks) */
struct dq_queue_s q; /* The queue of pending work */
struct kworker_s worker[1]; /* Describes a worker thread */
};
@@ -84,7 +86,7 @@ struct kwork_wqueue_s
#ifdef CONFIG_SCHED_HPWORK
struct hp_wqueue_s
{
uint32_t delay; /* Delay between polling cycles (ticks) */
systime_t delay; /* Delay between polling cycles (ticks) */
struct dq_queue_s q; /* The queue of pending work */
struct kworker_s worker[1]; /* Describes the single high priority worker */
};
@@ -97,7 +99,7 @@ struct hp_wqueue_s
#ifdef CONFIG_SCHED_LPWORK
struct lp_wqueue_s
{
uint32_t delay; /* Delay between polling cycles (ticks) */
systime_t delay; /* Delay between polling cycles (ticks) */
struct dq_queue_s q; /* The queue of pending work */
/* Describes each thread in the low priority queue's thread pool */
@@ -183,7 +185,7 @@ int work_lpstart(void);
*
****************************************************************************/
void work_process(FAR struct kwork_wqueue_s *wqueue, uint32_t period, int wndx);
void work_process(FAR struct kwork_wqueue_s *wqueue, systime_t period, int wndx);
#endif /* CONFIG_SCHED_WORKQUEUE */
#endif /* __SCHED_WQUEUE_WQUEUE_H */
+2 -1
View File
@@ -11,7 +11,8 @@
"clock_getres","time.h","","int","clockid_t","struct timespec*"
"clock_gettime","time.h","","int","clockid_t","struct timespec*"
"clock_settime","time.h","","int","clockid_t","const struct timespec*"
"clock_systimer","nuttx/clock.h","!defined(__HAVE_KERNEL_GLOBALS)","uint32_t"
"clock_systimer32","nuttx/clock.h","!defined(__HAVE_KERNEL_GLOBALS) && !defined(CONFIG_SYSTEM_TIME64)","uint32_t"
"clock_systimer64","nuttx/clock.h","!defined(__HAVE_KERNEL_GLOBALS) && defined(CONFIG_SYSTEM_TIME64)","uint64_t"
"close","unistd.h","CONFIG_NSOCKET_DESCRIPTORS > 0 || CONFIG_NFILE_DESCRIPTORS > 0","int","int"
"closedir","dirent.h","CONFIG_NFILE_DESCRIPTORS > 0","int","FAR DIR*"
"connect","sys/socket.h","CONFIG_NSOCKET_DESCRIPTORS > 0 && defined(CONFIG_NET)","int","int","FAR const struct sockaddr*","socklen_t"
1 _exit unistd.h void int
11 clock_getres time.h int clockid_t
12 clock_gettime time.h int clockid_t
13 clock_settime time.h int clockid_t
14 clock_systimer clock_systimer32 nuttx/clock.h !defined(__HAVE_KERNEL_GLOBALS) !defined(__HAVE_KERNEL_GLOBALS) && !defined(CONFIG_SYSTEM_TIME64) uint32_t
15 clock_systimer64 nuttx/clock.h !defined(__HAVE_KERNEL_GLOBALS) && defined(CONFIG_SYSTEM_TIME64) uint64_t
16 close unistd.h CONFIG_NSOCKET_DESCRIPTORS > 0 || CONFIG_NFILE_DESCRIPTORS > 0 int int
17 closedir dirent.h CONFIG_NFILE_DESCRIPTORS > 0 int FAR DIR*
18 connect sys/socket.h CONFIG_NSOCKET_DESCRIPTORS > 0 && defined(CONFIG_NET) int int
+10 -3
View File
@@ -60,7 +60,7 @@
****************************************************************************/
/****************************************************************************
* Name: syscall_clock_systimer
* Name: syscall_clock_systimer32/64
*
* Description:
* In the kernel build, proxying for clock_systimer() must be handled
@@ -74,7 +74,14 @@
*
****************************************************************************/
uint32_t syscall_clock_systimer(void)
#ifdef CONFIG_SYSTEM_TIME64
uint64_t syscall_clock_systimer64(void)
{
return clock_systimer();
return clock_systimer64();
}
#else
uint32_t syscall_clock_systimer32(void)
{
return clock_systimer32();
}
#endif
+5 -1
View File
@@ -99,7 +99,11 @@
* have an address that can be included in the g_funclookup[] table.
*/
uint32_t syscall_clock_systimer(void);
#ifdef CONFIG_SYSTEM_TIME64
uint64_t syscall_clock_systimer64(void);
#else
uint32_t syscall_clock_systimer32(void);
#endif
/****************************************************************************
* Pre-processor Definitions
+5 -1
View File
@@ -148,7 +148,11 @@ SYSCALL_LOOKUP(up_assert, 2, STUB_up_assert)
* NuttX configuration.
*/
SYSCALL_LOOKUP(syscall_clock_systimer, 0, STUB_clock_systimer)
#ifdef CONFIG_SYSTEM_TIME64
SYSCALL_LOOKUP(syscall_clock_systimer64, 0, STUB_clock_systimer64)
#endif
SYSCALL_LOOKUP(syscall_clock_systimer32, 0, STUB_clock_systimer32)
#endif
SYSCALL_LOOKUP(clock_getres, 2, STUB_clock_getres)
SYSCALL_LOOKUP(clock_gettime, 2, STUB_clock_gettime)
SYSCALL_LOOKUP(clock_settime, 2, STUB_clock_settime)