version 1.1.2.5, 2013/03/07 15:56:22
|
version 1.6, 2023/03/14 22:36:13
|
Line 12 terms:
|
Line 12 terms:
|
All of the documentation and software included in the ELWIX and AITNET |
All of the documentation and software included in the ELWIX and AITNET |
Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org> |
Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org> |
|
|
Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 | Copyright 2004 - 2022 |
by Michael Pounov <misho@elwix.org>. All rights reserved. |
by Michael Pounov <misho@elwix.org>. All rights reserved. |
|
|
Redistribution and use in source and binary forms, with or without |
Redistribution and use in source and binary forms, with or without |
Line 83 stridx_compare(struct stridx * __restrict a, struct st
|
Line 83 stridx_compare(struct stridx * __restrict a, struct st
|
} |
} |
|
|
static int |
static int |
search4month(char * __restrict psMonth, int * __restrict id) | search4month(char * psMonth, int * __restrict id) |
{ |
{ |
static int sorted = 0; |
static int sorted = 0; |
struct stridx *el; | struct stridx *el, item = { psMonth, 0 }; |
|
|
if (!psMonth) |
if (!psMonth) |
return -1; |
return -1; |
Line 98 search4month(char * __restrict psMonth, int * __restri
|
Line 98 search4month(char * __restrict psMonth, int * __restri
|
} |
} |
|
|
str_Lower(psMonth); |
str_Lower(psMonth); |
el = bsearch(psMonth, months, sizeof(months) / sizeof(struct stridx), sizeof(struct stridx), | el = bsearch(&item, months, sizeof(months) / sizeof(struct stridx), sizeof(struct stridx), |
(int (*)(const void*, const void*)) stridx_compare); |
(int (*)(const void*, const void*)) stridx_compare); |
if (el && id) |
if (el && id) |
*id = el->id; |
*id = el->id; |
Line 110 static int
|
Line 110 static int
|
search4wday(char * __restrict psWDay, int * __restrict id) |
search4wday(char * __restrict psWDay, int * __restrict id) |
{ |
{ |
static int sorted = 0; |
static int sorted = 0; |
struct stridx *el; | struct stridx *el, item = { psWDay, 0 }; |
|
|
if (!psWDay) |
if (!psWDay) |
return -1; |
return -1; |
Line 122 search4wday(char * __restrict psWDay, int * __restrict
|
Line 122 search4wday(char * __restrict psWDay, int * __restrict
|
} |
} |
|
|
str_Lower(psWDay); |
str_Lower(psWDay); |
el = bsearch(psWDay, wdays, sizeof(wdays) / sizeof(struct stridx), sizeof(struct stridx), | el = bsearch(&item, wdays, sizeof(wdays) / sizeof(struct stridx), sizeof(struct stridx), |
(int (*)(const void*, const void*)) stridx_compare); |
(int (*)(const void*, const void*)) stridx_compare); |
if (el && id) |
if (el && id) |
*id = el->id; |
*id = el->id; |
Line 260 time_Parse(const char *csTime)
|
Line 260 time_Parse(const char *csTime)
|
if ((tim = timegm(&tm)) == (time_t) -1) |
if ((tim = timegm(&tm)) == (time_t) -1) |
elwix_SetErr(EINVAL, "Invalid date/time format"); |
elwix_SetErr(EINVAL, "Invalid date/time format"); |
return tim; |
return tim; |
|
} |
|
|
|
/* |
|
* time_rdtsc() - Get TSC timer value from CPU |
|
* |
|
* return: TSC in nanoseconds |
|
*/ |
|
uint64_t |
|
time_rdtsc(void) |
|
{ |
|
#if defined(i386) || defined(__i386__) |
|
/* i386 */ |
|
uint32_t hi, lo; |
|
|
|
asm volatile("rdtsc" : "=d" (hi), "=a" (lo)); |
|
return (((uint64_t) hi << 32) | (uint64_t) lo); |
|
#elif defined(amd64) || defined(__amd64__) || \ |
|
defined(x86_64) || defined(__x86_64__) |
|
/* amd64 */ |
|
uint64_t res; |
|
|
|
asm volatile("rdtsc" : "=a" (res)); |
|
return res; |
|
#else |
|
/* unsupported for this architecture, get time by ordinary way */ |
|
struct timespec ts = { 0, 0LL }; |
|
|
|
#ifndef CLOCK_UPTIME_PRECISE |
|
#define CLOCK_UPTIME_PRECISE CLOCK_MONOTONIC |
|
#endif |
|
clock_gettime(CLOCK_UPTIME_PRECISE, &ts); |
|
|
|
return ((uint64_t) ts.tv_sec * 1000000000 + ts.tv_nsec); |
|
#endif |
} |
} |