#
1.14 |
|
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_2_BASE OPENBSD_5_3_BASE 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.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_4_BASE OPENBSD_4_5_BASE
|
#
1.8 |
|
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.7 |
|
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.6 |
|
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.5 |
|
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.4 |
|
10-Sep-2001 |
millert |
Use the LBL isnan() and isinf() on all platforms with ieee floating point.
|
Revision tags: OPENBSD_2_1_BASE OPENBSD_2_2_BASE OPENBSD_2_3_BASE OPENBSD_2_4_BASE OPENBSD_2_5_BASE OPENBSD_2_6_BASE OPENBSD_2_7_BASE OPENBSD_2_8_BASE OPENBSD_2_9_BASE
|
#
1.3 |
|
13-Nov-1996 |
niklas |
Sync to NetBSD + fixup RCS IDs
|
Revision tags: OPENBSD_2_0_BASE
|
#
1.2 |
|
19-Aug-1996 |
tholo |
Fix RCS ids Make sure everything uses {SYS,}LIBC_SCCS properly
|
#
1.1 |
|
18-Oct-1995 |
deraadt |
branches: 1.1.1; Initial revision
|
Revision tags: OPENBSD_5_2_BASE OPENBSD_5_3_BASE 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.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_4_BASE OPENBSD_4_5_BASE
|
#
1.8 |
|
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.7 |
|
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.6 |
|
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.5 |
|
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.4 |
|
10-Sep-2001 |
millert |
Use the LBL isnan() and isinf() on all platforms with ieee floating point.
|
Revision tags: OPENBSD_2_1_BASE OPENBSD_2_2_BASE OPENBSD_2_3_BASE OPENBSD_2_4_BASE OPENBSD_2_5_BASE OPENBSD_2_6_BASE OPENBSD_2_7_BASE OPENBSD_2_8_BASE OPENBSD_2_9_BASE
|
#
1.3 |
|
13-Nov-1996 |
niklas |
Sync to NetBSD + fixup RCS IDs
|
Revision tags: OPENBSD_2_0_BASE
|
#
1.2 |
|
19-Aug-1996 |
tholo |
Fix RCS ids Make sure everything uses {SYS,}LIBC_SCCS properly
|
#
1.1 |
|
18-Oct-1995 |
deraadt |
branches: 1.1.1; Initial revision
|