aboutsummaryrefslogtreecommitdiff
path: root/kern/mach_clock.h
Commit message (Collapse)AuthorAgeFilesLines
* Track task and thread time using time_value64_t.Flavio Cruz2023-03-131-1/+1
| | | | | | | | Changed kern/timer.c to use the higher precision time_value64_t. Of course, this won't suffer from the 2038 overflow but it does provide nanosecond precision (if gnumach ever uses a better timer) and moves us closer to only having time_value64_t. Message-Id: <ZA63tGcv3bETUJFJ@jupiter.tail36e24.ts.net>
* Update thread and task creation time to use time_value64_tFlavio Cruz2023-03-121-2/+2
| | | | Message-Id: <ZAzYoE7+ugFsH5JA@jupiter.tail36e24.ts.net>
* fix rpc time value for 64 bitLuca Dariz2023-02-121-1/+1
| | | | | | | | | | | | * include/mach/task_info.h: use rpc variant of time_value_t * include/mach/thread_info.h: Likewise * kern/mach_clock.c: use rpc variant of time_value_t in read_time_stamp() * kern/mach_clock.h: Likewise * kern/thread.c: use rpc variant of thread_read_times() * kern/timer.h_ add thread_read_times_rpc() by converting time_value_t to the corresponding rpc structures inline. Message-Id: <20230212170313.1501404-5-luca@orpolo.org>
* Fix several warnings for -Wmissing-prototypesFlavio Cruz2023-01-241-13/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * device/ds_routines.c: use static qualifier. * device/subrs.c: delete unused functions. * i386/i386/ast_check.c: include prototypes in kern/ast.h * i386/i386/db_disasm.c: Include prototypes in ddb/db_examine.h * i386/i386/db_interface.h: Define prototype for kdb_kentry. Expose debug methods feep and kd_debug_put. * i386/i386/db_trace.c: delete left over cthreads support, functions are not used. * i386/i386/model_dep.h: Define prototype for c_boot_entry. * i386/i386at/acpi_parse_apic.c: Static qualifiers. * i386/i386at/autoconf.c: Include header file for prototypes and remove dead code. * i386/i386at/autoconf.h: Fix prototype. * i386/i386at/com.c: Add static qualifiers, delete dead code. * i386/i386at/com.c: ditto. * i386/i386at/com.h: Define prototypes for debug functions. * i386/i386at/int_init.c: Include header. * i386/i386at/kd.c: Include header for debug interface. Remove dead kd_cmdreg_read and make xga_getpos static. * i386/i386at/kd_mouse.c: Static qualifiers. * i386/i386at/lpr.c: Dead lprpr. * i386/i386at/model_dep.c: Remove exit function. * kern/mach_clock.c: Include mig prototypes. * kern/mach_clock.h: Remove duplicates of mig prototypes. * kern/machine.c: Use static. * kern/startup.c: slave_main is unused. * kern/thread.h: Define thread_stats that is useful for debugging. * kern/timer.c: Keep db_thread_times since it can be used for debugging. * kern/timer.h: ditto. * linux/dev/glue/misc.c: Use mig header for host_get_time. Message-Id: <Y8oyiecaflCaYhaW@mercury.tail36e24.ts.net>
* Add host_get_time64 RPC to return the time as time_value64_tFlavio Cruz2023-01-191-1/+1
| | | | | | Also updated the mapped time to support the new 64-bit time while keeping compatible with the user land programs currently using it so they can be migrated in parallel.
* Introduce time_value64_t to keep track of real time in the kernelFlavio Cruz2023-01-031-0/+1
| | | | | | | | | | | | time_value64_t uses int64_t to track seconds and nanoseconds and hence is Y2038 proof. It does not have nano second resolution but it could be provided in the future. Removed include/sys/time.h as it remaps time_value_t into timeval which can create confusion. The timestamp from keyboard and mouse events is no longer set and replaced with rpc_time_value for better compatibility.
* Add kernel profiling through samplingSamuel Thibault2016-04-201-1/+2
| | | | | | | | | | | | | | | * NEWS: Advertise feature. * configfrac.ac (--enable-kernsample): Add option. * kern/pc_sample.h (take_pc_sample): Add usermode and pc parameter. (take_pc_sample_macro): Take usermode and pc parameters, pass as such to take_pc_sample. * kern/pc_sample.c (take_pc_sample): Use pc parameter when usermode is 1. * kern/mach_clock.c (clock_interrupt): Add pc parameter. Pass usermode and pc to take_pc_sample_macro call. * i386/i386/hardclock.c (hardclock): Pass regs->eip to clock_interrupt call on normal interrupts, NULL on interrupt interrupt. * vm/vm_fault.c (vm_fault_cleanup): Set usermode to 1 and pc to NULL in take_pc_sample_macro call.
* kern: add boot-time clock, use it for time stampsJustus Winter2015-07-251-1/+10
| | | | | | | | | | | | | | | | | | | | | | The kernel keeps track of task and thread creation times by saving a time stamp. Previously, the real-time clock was used for this. When the real-time clock is changed, however, the reference frame for the time stamps is lost. This surfaced in Hurd systems reporting spuriously long uptimes. Fix this by creating a boot-time clock and use it as reference frame for the time stamps. * kern/mach_clock.c (clock_boottime_offset): Create clock by keeping track of the offset from the real-time. (clock_boottime_update): New function. (record_time_stamp): Use the boot-time clock for time stamps. (read_time_stamp): New function to convert it back to real-time. (host_set_time): Call `clock_boottime_update'. * kern/mach_clock.h (record_time_stamp): Amend comment. (read_time_stamp): New declaration. * kern/task.c (task_info): Use `read_time_stamp'. * kern/thread.c (thread_info): Likewise.
* Use explicit prototypes for struct dev_ops fieldsMarin Ramesa2014-04-041-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * device/conf.h: Include <sys/types.h>, <mach/port.h>, <mach/vm_prot.h>. Predefine struct io_req, io_req_t and io_return_t. (dev_ops): Add explicit prototypes for d_open, d_close, d_read, d_write, d_getstat, d_setstat, d_mmap, d_port_death. (nulldev_open, nulldev_close, nulldev_read, nulldev_write, nulldev_getstat, nulldev_setstat, nulldev_portdeath): Add prototypes. (nomap): Fix prototype. * device/dev_name.c (nulldev_open, nulldev_close, nulldev_read, nulldev_write, nulldev_getstat, nulldev_setstat, nulldev_portdeath): New functions. (nomap): Fix prototype. * device/ds_routines.c (dev_close): Pass 0 as flag parameter. * device/kmsg.c (kmsgclose): Drop return value. * device/kmsg.h (kmsgclose): Fix prototype. * i386/i386at/com.c (comopen): Fix prototype. (comclose): Fix prototype, drop return value. (comread, comwrite): Fix prototype. * i386/i386at/com.h (comopen, comclose, comread, comwrite): Fix prototype. * i386/i386at/conf.c (dev_ops): Use nulldev_open, nulldev_close, nulldev_read, nulldev_write, nulldev_getstat, nulldev_setstat, nulldev_portdeath where appropriate. * i386/i386at/kd.c (kdclose, kdread, kdwrite, kdmmap): Fix prototype. * i386/i386at/kd.h (kdclose, kdread, kdwrite, kdmmap): Likewise. * i386/i386at/kd_event.c (kbdopen): Likewise. * i386/i386at/kd_event.h (kbdopen): Likewise. * i386/i386at/kd_mouse.c (mouseopen): Likewise. * i386/i386at/kd_mouse.h (mouseopen): Likewise. * i386/i386at/lpr.c (lpropen, lprclose, lprread, lprwrite): Likewise. * i386/i386at/lpr.h (lpropen, lprclose, lprread, lprwrite): Likewise. * i386/i386at/mem.c (memmmap): Likewise. * i386/i386at/mem.h (memmmap): Likewise. * i386/i386at/model_dep.c (timemmap): Likewise. * i386/i386at/model_dep.h (timemmap): Likewise. * kern/mach_clock.c (timeopen, timeclose): Likewise. * kern/mach_clock.h: Include <sys/types.h>, predefine struct io_req and io_req_t. (timeopen, timeclose): Fix prototype.
* kern: qualify pointers whose dereferenced values are constant with constMarin Ramesa2013-12-171-1/+1
|
* i386/i386at/conf.c: remove forward declarationsMarin Ramesa2013-12-051-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * i386/Makefrag.am: Include i386/i386at/model_dep.h and i386/i386at/mem.h. * i386/i386at/com.h (comgetstat, comsetstat): Declare as extern. (comopen, comclose, comread, comwrite, comportdeath): Add prototypes. * i386/i386at/conf.c: Include kern/mach_clock.h and i386at/model_dep.h. (timeopen, timeclose, timemmap): Remove forward declarations. (kdopen, kdclose, kdread, kdwrite, kdgetstat, kdsetstat, kdportdeath, kdmmap): Likewise. (comopen, comclose, comread, comwrite, comportdeath, comgetstat, comsetstat): Likewise. (lpropen, lprclose, lprread, lprwrite, lprportdeath, lprgetstat, lprsetstat): Likewise. (kbdopen, kbdclose, kbdread, kbdgetstat, kbdsetstat): Likewise. (mouseopen, mouseclose, mouseread, mousegetstat): Likewise. (memmmap): Likewise. (kmsgopen, kmsgclose, kmsgread, kmsggetstat): Likewise. (hypcnopen, hypcnclose, hypcnread, hypcnwrite, hypcnportdeath, hypcngetstat, hypcnsetstat): Likewise. Include i386at/kd.h. Include i386at/com.h. Include i386at/lpr.h. Include i386at/kd_event.h. Include i386at/kd_mouse.h. Include i386at/mem.h. Include device/kmsg.h. Include xen/console.h. * i386/i386at/kd.h: Include device/io_req.h. (kdopen, kdclose, kdread, kdwrite, kdgetstat, kdsetstat, kdportdeath, kdmmap): Add prototypes. * i386/i386at/kd_event.h (kbdopen, kbdclose, kbdread, kbdgetstat, kbdsetstat): Likewise. * i386/i386at/kd_mouse.h (mouseopen, mouseclose, mouseread, mousegetstat): Likewise. * i386/i386at/lpr.h (lpropen, lprclose, lprread, lprwrite, lprportdeath): Likewise. (lprgetstat, lprsetstat): Declare as extern. * i386/i386at/mem.h: New file. Add copyright. [_MEM_H_]: Add ifndef. (memmmap): Add prototype. * i386/i386at/model_dep.c: Include i386/i386at/model_dep.h. (timemmap): Fix argument list. * i386/i386at/model_dep.h: New file. Add copyright. [_MODEL_DEP_H_]: Add ifndef. (timemmap): Add prototype. * kern/mach_clock.h (timeopen, timeclose): Add prototypes. * xen/console.h (hypcnopen, hypcnclose, hypcnread, hypcnwrite, hypcnportdeath, hypcngetstat, hypcnsetstat): Add prototypes.
* Cast function timeout() argument to fix a warningGuillem Jover2011-08-301-3/+5
| | | | | | | | * kern/mach_clock.h (timer_func_t): New function type. (struct timer_elt): Change fcn type to timer_func_t. * i386/i386at/com.c (comstart): Cast `ttrstrt' to `timer_funct_t *' in `timeout' call. * i386/i386at/lpr.c (lprstart): Likewise,
* Fix warningsSamuel Thibault2009-10-201-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * device/chario.c (ttypush): Set parameter type to void * instead of struct tty *, and implicitly cast the former into the latter instead. * i386/i386at/com.c: Include <kern/mach_clock.h>. (timeout, ttrstrt): Remove declarations. (comtimer): Add unused void * parameter. (comopen): Pass NULL to comtimer function. * i386/i386at/kd.h (kd_belloff): Add unused void * parameter. * i386/i386at/kd.c (timeout): Remove declaration. (kd_belloff): Add unused void * parameter. (feep, kdsetbell): Pass NULL to kd_belloff function. * i386/i386at/lpr.c: Include <mach_clock.h>. (timeout, ttrstrt): Remove declarations. * kern/mach_clock.c (softclock, timeout, untimeout): Set parameter type of fcn function pointer to void * instead of char *. Set type of param to void * instead of char *. * kern/mach_clock.h (timer_elt): Set parameter type of fcn member to void * instead of char *. Set time of param member to void * instead of char *. (timeout): Set parameter type of fcn function pointer parameter to void * instead of char *. (untimeout): Likewise, set type of param parameter to void * instead of char *. * kern/sched_prim.c (sched_init): Remove cast of recompute_priorities. Replace (char *)0 with NULL. (thread_timeout): Set parameter type to void * instead of thread_t, and implicitly cast the former into the latter instead. (thread_timeout_setup): Remove cast of thread_timeout, cast thread_depress_timeout into (void (*) (void*)). Remove cast of thread. (thread_recompute_priorities): Add unused void * parameter.
* 2008-07-20 Samuel Thibault <samuel.thibault@ens-lyon.org>Samuel Thibault2009-06-181-1/+1
| | | | | | * kern/mach_clock.c (timeout): Make the `fcn' parameter take a void * instead of char *. * kern/mach_clock.h (timeout): Likewise.
* 2007-02-05 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge2009-06-181-13/+50
| | | | | | * kern/time_out.h: Remove file after having installed the missing bits in... * kern/mach_clock.h: ... here.
* 2006-11-13 Barry deFreese <bddebian@comcast.net>Samuel Thibault2009-06-181-0/+68
* i386/i386/locore.h: New file. * i386/i386/pcb.h: New file. * i386/i386/pcb.c: Include `pcb.h'. * i386/i386/pit.c (clkstart): Fix type of s into unsigned long. * i386/i386/spl.h (spl0, splsched, splx, splsoftclock, splon, sploff) (splhigh, splimp, spltty, splclock, setsoftclock): Add prototype. * i386/i386at/kd_event.h: New file. * i386/i386at/kd_event.c: Include `kd_event.h'. * i386/i386at/kd_mouse.h: New file. * i386/i386at/kd_mouse.c: Include `kd_mouse.h'. (mouseclose): Fix call of `serial_mouse_close' function. * i386/i386at/kd.c: Include `kd_event.h' and `kd_mouse.h'. * i386/i386at/kd.h (splx, spltty): Remove prototypes.h * i386/i386at/lpr.c: Likewise. * ipc/mach_msg.c: Include `machine/locore.h' and `machine/pcb.h'. * kern/mach_clock.h: New file. * kern/mach_clock.c: Include `kern/queue.h', `kern/timer.h' and `mach_clock.h'. * kern/mach_factor.h: New file. * kern/mach_factor.c: Include `mach_factor.h'. * kern/sched_prim.c: Include `kern/mach_factor.h'. * kern/thread.c: Include `machine/pcb.h'.