open source driving agent
				
			 
			
		 
		
		
		
		
		
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
	
	
		
		
			
	
	
		
			
				
					
						
							|  |  |  | from posix.time cimport clock_gettime, timespec, CLOCK_MONOTONIC_RAW, clockid_t
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | IF UNAME_SYSNAME == "Darwin":
 | 
					
						
							|  |  |  |   # Darwin doesn't have a CLOCK_BOOTTIME
 | 
					
						
							|  |  |  |   CLOCK_BOOTTIME = CLOCK_MONOTONIC_RAW
 | 
					
						
							|  |  |  | ELSE:
 | 
					
						
							|  |  |  |   from posix.time cimport CLOCK_BOOTTIME
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | cdef double readclock(clockid_t clock_id):
 | 
					
						
							|  |  |  |   cdef timespec ts
 | 
					
						
							|  |  |  |   cdef double current
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   clock_gettime(clock_id, &ts)
 | 
					
						
							|  |  |  |   current = ts.tv_sec + (ts.tv_nsec / 1000000000.)
 | 
					
						
							|  |  |  |   return current
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def monotonic_time():
 | 
					
						
							|  |  |  |   return readclock(CLOCK_MONOTONIC_RAW)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def sec_since_boot():
 | 
					
						
							|  |  |  |   return readclock(CLOCK_BOOTTIME)
 | 
					
						
							|  |  |  | 
 |