@@ -931,27 +931,24 @@ int janet_gettime(struct timespec *spec, enum JanetTimeSource source) {
931
931
#include <mach/clock.h>
932
932
#include <mach/mach.h>
933
933
int janet_gettime (struct timespec * spec , enum JanetTimeSource source ) {
934
- if (source == JANET_TIME_REALTIME ) {
934
+ if (source == JANET_TIME_CPUTIME ) {
935
+ clock_t tmp = clock ();
936
+ spec -> tv_sec = tmp / CLOCKS_PER_SEC ;
937
+ spec -> tv_nsec = ((tmp - (spec -> tv_sec * CLOCKS_PER_SEC )) * 1000000000 ) / CLOCKS_PER_SEC ;
938
+ } else {
935
939
clock_serv_t cclock ;
936
940
mach_timespec_t mts ;
937
- host_get_clock_service (mach_host_self (), CALENDAR_CLOCK , & cclock );
941
+ clock_id_t cid = CALENDAR_CLOCK ;
942
+ if (source == JANET_TIME_REALTIME ) {
943
+ cid = CALENDAR_CLOCK ;
944
+ } else if (source == JANET_TIME_MONOTONIC ) {
945
+ cid = SYSTEM_CLOCK ;
946
+ }
947
+ host_get_clock_service (mach_host_self (), cid , & cclock );
938
948
clock_get_time (cclock , & mts );
939
949
mach_port_deallocate (mach_task_self (), cclock );
940
950
spec -> tv_sec = mts .tv_sec ;
941
951
spec -> tv_nsec = mts .tv_nsec ;
942
- } else if (source == JANET_TIME_MONOTONIC ) {
943
- clock_serv_t cclock ;
944
- int nsecs ;
945
- mach_msg_type_number_t count ;
946
- host_get_clock_service (mach_host_self (), SYSTEM_CLOCK , & cclock );
947
- clock_get_attributes (cclock , CLOCK_GET_TIME_RES , (clock_attr_t )& nsecs , & count );
948
- mach_port_deallocate (mach_task_self (), cclock );
949
- clock_getres (CLOCK_MONOTONIC , spec );
950
- }
951
- if (source == JANET_TIME_CPUTIME ) {
952
- clock_t tmp = clock ();
953
- spec -> tv_sec = tmp / CLOCKS_PER_SEC ;
954
- spec -> tv_nsec = ((tmp - (spec -> tv_sec * CLOCKS_PER_SEC )) * 1000000000 ) / CLOCKS_PER_SEC ;
955
952
}
956
953
return 0 ;
957
954
}
0 commit comments