#
1.17 |
|
06-Jul-2020 |
pirofti |
Add support for timeconting in userland.
This diff exposes parts of clock_gettime(2) and gettimeofday(2) to userland via libc eliberating processes from the need for a context switch everytime they want to count the passage of time.
If a timecounter clock can be exposed to userland than it needs to set its tc_user member to a non-zero value. Tested with one or multiple counters per architecture.
The timing data is shared through a pointer found in the new ELF auxiliary vector AUX_openbsd_timekeep containing timehands information that is frequently updated by the kernel.
Timing differences between the last kernel update and the current time are adjusted in userland by the tc_get_timecount() function inside the MD usertc.c file.
This permits a much more responsive environment, quite visible in browsers, office programs and gaming (apparently one is are able to fly in Minecraft now).
Tested by robert@, sthen@, naddy@, kmos@, phessler@, and many others!
OK from at least kettenis@, cheloha@, naddy@, sthen@
|
Revision tags: OPENBSD_5_4_BASE OPENBSD_5_5_BASE OPENBSD_5_6_BASE OPENBSD_5_7_BASE OPENBSD_5_8_BASE OPENBSD_5_9_BASE OPENBSD_6_0_BASE OPENBSD_6_1_BASE OPENBSD_6_2_BASE OPENBSD_6_3_BASE OPENBSD_6_4_BASE OPENBSD_6_5_BASE OPENBSD_6_6_BASE OPENBSD_6_7_BASE
|
#
1.16 |
|
05-Jun-2013 |
miod |
...also add __modsi3 and __umodsi3, and make these symbols weak by default.
|
#
1.15 |
|
05-Jun-2013 |
miod |
Add __divsi3 and __udivsi3 gcc-compatible routines. Not used by anything yet (as gcc does not emit code calling them), but will be shortly; belatedly riding the libc minor bump.
|
Revision tags: OPENBSD_5_3_BASE
|
#
1.14 |
|
15-Sep-2012 |
martynas |
Adapt ieee.h, gdtoa and libc to the fact that we don't have 80-bit floats on m88k. Agreed by miod@.
|
Revision tags: OPENBSD_5_2_BASE
|
#
1.13 |
|
12-Apr-2012 |
deraadt |
alloca.c cannot be used
|
Revision tags: OPENBSD_5_0_BASE OPENBSD_5_1_BASE
|
#
1.12 |
|
08-Jul-2011 |
martynas |
Revert (leaving the complex math part alone). Some stuff is depending on this historical behavior; so we're stuck in this stupid situation. No cookie for me.
|
#
1.11 |
|
08-Jul-2011 |
martynas |
Move fabs(3), frexp(3), and modf(3) to libm--nothing has been using them in libc for a very long time. OK guenther@.
|
Revision tags: OPENBSD_4_6_BASE OPENBSD_4_7_BASE OPENBSD_4_8_BASE OPENBSD_4_9_BASE
|
#
1.10 |
|
21-Apr-2009 |
martynas |
remove from gen so that lint doesn't check gen if assembly versions are available. spotted by theo
|
#
1.9 |
|
19-Apr-2009 |
martynas |
- ldexp implementation has issues. switch to the one from libm - remove frexp in hppa64, cloned from hppa - move generic ieee754 implementations of modf and ldexp to gen ok kettenis@, "looks good" millert@
|
Revision tags: OPENBSD_4_5_BASE
|
#
1.8 |
|
09-Dec-2008 |
martynas |
- add long double signbit - make long double versions weak aliases to double versions, on archs where long doubles are 64 bits - no need to have two finites. finite() and finitef() are non-standard 3BSD obsolete versions of isfinite. remove from libm. make them weak_alias in libc to __isfinite and __isfinitef instead. similarly make 3BSD obsolete versions of isinf, isinff, isnan, isnanf weak_aliases to C99's __isinf, __isinff, __isnan, __isnanf - bump major ok millert@
|
#
1.7 |
|
07-Sep-2008 |
martynas |
- replace dtoa w/ David's gdtoa, version 2008-03-15 - provide proper dtoa locks - use the real strtof implementation - add strtold, __hdtoa, __hldtoa - add %a/%A support - don't lose precision in printf, don't round to double anymore - implement extended-precision versions of libc functions: fpclassify, isnan, isinf, signbit, isnormal, isfinite, now that the ieee.h is fixed - separate vax versions of strtof, and __hdtoa - add complex math support. added functions: cacos, casin, catan, ccos, csin, ctan, cacosh, casinh, catanh, ccosh, csinh, ctanh, cexp, clog, cabs, cpow, csqrt, carg, cimag, conj, cproj, creal, cacosf, casinf, catanf, ccosf, csinf, ctanf, cacoshf, casinhf, catanhf, ccoshf, csinhf, ctanhf, cexpf, clogf, cabsf, cpowf, csqrtf, cargf, cimagf, conjf, cprojf, crealf - add fdim, fmax, fmin - add log2. (adapted implementation e_log.c. could be more acruate & faster, but it's good enough for now) - remove wrappers & cruft in libm, supposed to work-around mistakes in SVID, etc.; use ieee versions. fixes issues in python 2.6 for djm@ - make _digittoint static - proper definitions for i386, and amd64 in ieee.h - sh, powerpc don't really have extended-precision - add missing definitions for mips64 (quad), m{6,8}k (96-bit) float.h for LDBL_* - merge lead to frac for m{6,8}k, for gdtoa to work properly - add FRAC*BITS & EXT_TO_ARRAY32 definitions in ieee.h, for hdtoa&ldtoa to use - add EXT_IMPLICIT_NBIT definition, which indicates implicit normalization bit - add regression tests for libc: fpclassify and printf - arith.h & gd_qnan.h definitions - update ieee.h: hppa doesn't have quad-precision, hppa64 does - add missing prototypes to gdtoaimp - on 64-bit platforms make sure gdtoa doesn't use a long when it really wants an int - etc., what i may have forgotten... - bump libm major, due to removed&changed symbols - no libc bump, since this is riding on djm's libc major crank from a day ago
discussed with / requested by / testing theo, sthen@, djm@, jsg@, merdely@, jsing@, tedu@, brad@, jakemsr@, and others. looks good to millert@ parts of the diff ok kettenis@
this commit does not include: - man page changes
|
Revision tags: OPENBSD_4_4_BASE
|
#
1.6 |
|
24-Jul-2008 |
martynas |
- move isinf, isnan dups to gen, since most is ieee 754 - is{inf,nan} should be macros for real-floating, so rename to __is{inf,nan}, per C99 - implement C99 __fpclassify(), __fpclassifyf(), __isfinite(), __isfinitef(), __isnormal(), __isnormalf(), __signbit(), __signbitf() - long functions added, but not yet enabled, till ieee.h is fixed - implement vax equivalents of the functions - reimplement isinff, isnanf in a better way, and move to libc - add qnan bytes for all archs - bump major man pages will follow ok millert@. arm bits looked over by drahn@ discussed w/ theo, who showed the right direction, to put these functions in libc
|
Revision tags: OPENBSD_3_9_BASE OPENBSD_4_0_BASE OPENBSD_4_1_BASE OPENBSD_4_2_BASE OPENBSD_4_3_BASE
|
#
1.5 |
|
29-Nov-2005 |
deraadt |
if we pull in a .S file, we must fake out the lint with a .c file for this first cut, we will do this for alloca() using alloca.c by adding it to LSRCS
|
Revision tags: OPENBSD_3_7_BASE OPENBSD_3_8_BASE
|
#
1.4 |
|
01-Feb-2005 |
millert |
Replace broken frexp() with a working one from FreeBSD. There's no need to have a copy for each platform with ieee floating point, only vax needs a special version (which probably has similar bugs). OK and with help from otto@
|
Revision tags: OPENBSD_3_4_BASE OPENBSD_3_5_BASE OPENBSD_3_6_BASE
|
#
1.3 |
|
02-May-2003 |
millert |
Add Doug Gwyn's portable alloca() for platforms w/o an assembler version. Normally, gcc provides its own alloca() (unless -fno-builtin is specified). The C version is decidedly suboptimal--we really need proper assembler versions but this will work as a stop-gap measure.
|
Revision tags: OPENBSD_3_0_BASE OPENBSD_3_1_BASE OPENBSD_3_2_BASE OPENBSD_3_3_BASE
|
#
1.2 |
|
21-Sep-2001 |
miod |
add isnan.c
|
Revision tags: OPENBSD_2_5_BASE OPENBSD_2_6_BASE OPENBSD_2_7_BASE OPENBSD_2_8_BASE OPENBSD_2_9_BASE
|
#
1.1 |
|
15-Dec-1998 |
smurph |
correted sigsetjmp, setjump. Fixed MACHINE_ARCH vs. MACHINE stuff.
|
Revision tags: OPENBSD_5_4_BASE OPENBSD_5_5_BASE OPENBSD_5_6_BASE OPENBSD_5_7_BASE OPENBSD_5_8_BASE OPENBSD_5_9_BASE OPENBSD_6_0_BASE OPENBSD_6_1_BASE OPENBSD_6_2_BASE
|
#
1.16 |
|
05-Jun-2013 |
miod |
...also add __modsi3 and __umodsi3, and make these symbols weak by default.
|
#
1.15 |
|
05-Jun-2013 |
miod |
Add __divsi3 and __udivsi3 gcc-compatible routines. Not used by anything yet (as gcc does not emit code calling them), but will be shortly; belatedly riding the libc minor bump.
|
Revision tags: OPENBSD_5_3_BASE
|
#
1.14 |
|
15-Sep-2012 |
martynas |
Adapt ieee.h, gdtoa and libc to the fact that we don't have 80-bit floats on m88k. Agreed by miod@.
|
Revision tags: OPENBSD_5_2_BASE
|
#
1.13 |
|
12-Apr-2012 |
deraadt |
alloca.c cannot be used
|
Revision tags: OPENBSD_5_0_BASE OPENBSD_5_1_BASE
|
#
1.12 |
|
08-Jul-2011 |
martynas |
Revert (leaving the complex math part alone). Some stuff is depending on this historical behavior; so we're stuck in this stupid situation. No cookie for me.
|
#
1.11 |
|
08-Jul-2011 |
martynas |
Move fabs(3), frexp(3), and modf(3) to libm--nothing has been using them in libc for a very long time. OK guenther@.
|
Revision tags: OPENBSD_4_6_BASE OPENBSD_4_7_BASE OPENBSD_4_8_BASE OPENBSD_4_9_BASE
|
#
1.10 |
|
21-Apr-2009 |
martynas |
remove from gen so that lint doesn't check gen if assembly versions are available. spotted by theo
|
#
1.9 |
|
19-Apr-2009 |
martynas |
- ldexp implementation has issues. switch to the one from libm - remove frexp in hppa64, cloned from hppa - move generic ieee754 implementations of modf and ldexp to gen ok kettenis@, "looks good" millert@
|
Revision tags: OPENBSD_4_5_BASE
|
#
1.8 |
|
09-Dec-2008 |
martynas |
- add long double signbit - make long double versions weak aliases to double versions, on archs where long doubles are 64 bits - no need to have two finites. finite() and finitef() are non-standard 3BSD obsolete versions of isfinite. remove from libm. make them weak_alias in libc to __isfinite and __isfinitef instead. similarly make 3BSD obsolete versions of isinf, isinff, isnan, isnanf weak_aliases to C99's __isinf, __isinff, __isnan, __isnanf - bump major ok millert@
|
#
1.7 |
|
07-Sep-2008 |
martynas |
- replace dtoa w/ David's gdtoa, version 2008-03-15 - provide proper dtoa locks - use the real strtof implementation - add strtold, __hdtoa, __hldtoa - add %a/%A support - don't lose precision in printf, don't round to double anymore - implement extended-precision versions of libc functions: fpclassify, isnan, isinf, signbit, isnormal, isfinite, now that the ieee.h is fixed - separate vax versions of strtof, and __hdtoa - add complex math support. added functions: cacos, casin, catan, ccos, csin, ctan, cacosh, casinh, catanh, ccosh, csinh, ctanh, cexp, clog, cabs, cpow, csqrt, carg, cimag, conj, cproj, creal, cacosf, casinf, catanf, ccosf, csinf, ctanf, cacoshf, casinhf, catanhf, ccoshf, csinhf, ctanhf, cexpf, clogf, cabsf, cpowf, csqrtf, cargf, cimagf, conjf, cprojf, crealf - add fdim, fmax, fmin - add log2. (adapted implementation e_log.c. could be more acruate & faster, but it's good enough for now) - remove wrappers & cruft in libm, supposed to work-around mistakes in SVID, etc.; use ieee versions. fixes issues in python 2.6 for djm@ - make _digittoint static - proper definitions for i386, and amd64 in ieee.h - sh, powerpc don't really have extended-precision - add missing definitions for mips64 (quad), m{6,8}k (96-bit) float.h for LDBL_* - merge lead to frac for m{6,8}k, for gdtoa to work properly - add FRAC*BITS & EXT_TO_ARRAY32 definitions in ieee.h, for hdtoa&ldtoa to use - add EXT_IMPLICIT_NBIT definition, which indicates implicit normalization bit - add regression tests for libc: fpclassify and printf - arith.h & gd_qnan.h definitions - update ieee.h: hppa doesn't have quad-precision, hppa64 does - add missing prototypes to gdtoaimp - on 64-bit platforms make sure gdtoa doesn't use a long when it really wants an int - etc., what i may have forgotten... - bump libm major, due to removed&changed symbols - no libc bump, since this is riding on djm's libc major crank from a day ago
discussed with / requested by / testing theo, sthen@, djm@, jsg@, merdely@, jsing@, tedu@, brad@, jakemsr@, and others. looks good to millert@ parts of the diff ok kettenis@
this commit does not include: - man page changes
|
Revision tags: OPENBSD_4_4_BASE
|
#
1.6 |
|
24-Jul-2008 |
martynas |
- move isinf, isnan dups to gen, since most is ieee 754 - is{inf,nan} should be macros for real-floating, so rename to __is{inf,nan}, per C99 - implement C99 __fpclassify(), __fpclassifyf(), __isfinite(), __isfinitef(), __isnormal(), __isnormalf(), __signbit(), __signbitf() - long functions added, but not yet enabled, till ieee.h is fixed - implement vax equivalents of the functions - reimplement isinff, isnanf in a better way, and move to libc - add qnan bytes for all archs - bump major man pages will follow ok millert@. arm bits looked over by drahn@ discussed w/ theo, who showed the right direction, to put these functions in libc
|
Revision tags: OPENBSD_3_9_BASE OPENBSD_4_0_BASE OPENBSD_4_1_BASE OPENBSD_4_2_BASE OPENBSD_4_3_BASE
|
#
1.5 |
|
29-Nov-2005 |
deraadt |
if we pull in a .S file, we must fake out the lint with a .c file for this first cut, we will do this for alloca() using alloca.c by adding it to LSRCS
|
Revision tags: OPENBSD_3_7_BASE OPENBSD_3_8_BASE
|
#
1.4 |
|
01-Feb-2005 |
millert |
Replace broken frexp() with a working one from FreeBSD. There's no need to have a copy for each platform with ieee floating point, only vax needs a special version (which probably has similar bugs). OK and with help from otto@
|
Revision tags: OPENBSD_3_4_BASE OPENBSD_3_5_BASE OPENBSD_3_6_BASE
|
#
1.3 |
|
02-May-2003 |
millert |
Add Doug Gwyn's portable alloca() for platforms w/o an assembler version. Normally, gcc provides its own alloca() (unless -fno-builtin is specified). The C version is decidedly suboptimal--we really need proper assembler versions but this will work as a stop-gap measure.
|
Revision tags: OPENBSD_3_0_BASE OPENBSD_3_1_BASE OPENBSD_3_2_BASE OPENBSD_3_3_BASE
|
#
1.2 |
|
21-Sep-2001 |
miod |
add isnan.c
|
Revision tags: OPENBSD_2_5_BASE OPENBSD_2_6_BASE OPENBSD_2_7_BASE OPENBSD_2_8_BASE OPENBSD_2_9_BASE
|
#
1.1 |
|
15-Dec-1998 |
smurph |
correted sigsetjmp, setjump. Fixed MACHINE_ARCH vs. MACHINE stuff.
|