Kernel: Remove get_unix_timestamp from SystemTimer
Kernel now uses the percise real_time() and time_since_boot()
This commit is contained in:
		
							parent
							
								
									008c777a9f
								
							
						
					
					
						commit
						e74fdbc55b
					
				| 
						 | 
				
			
			@ -25,10 +25,9 @@ namespace Kernel
 | 
			
		|||
		virtual uint64_t ms_since_boot() const override;
 | 
			
		||||
		virtual timespec time_since_boot() const override;
 | 
			
		||||
		
 | 
			
		||||
		void sleep(uint64_t) const;
 | 
			
		||||
		void sleep(uint64_t ms) const;
 | 
			
		||||
 | 
			
		||||
		uint64_t get_unix_timestamp() const;
 | 
			
		||||
		timespec get_real_time() const;
 | 
			
		||||
		timespec real_time() const;
 | 
			
		||||
 | 
			
		||||
	private:
 | 
			
		||||
		SystemTimer() = default;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -384,16 +384,16 @@ namespace Kernel
 | 
			
		|||
		if (error_or.error().get_error_code() != ENOENT)
 | 
			
		||||
			return error_or.error();
 | 
			
		||||
 | 
			
		||||
		uint64_t current_time = SystemTimer::get().get_unix_timestamp();
 | 
			
		||||
		timespec current_time = SystemTimer::get().real_time();
 | 
			
		||||
 | 
			
		||||
		Ext2::Inode ext2_inode;
 | 
			
		||||
		ext2_inode.mode			= mode;
 | 
			
		||||
		ext2_inode.uid			= uid;
 | 
			
		||||
		ext2_inode.size			= 0;
 | 
			
		||||
		ext2_inode.atime 		= current_time;
 | 
			
		||||
		ext2_inode.ctime 		= current_time;
 | 
			
		||||
		ext2_inode.mtime 		= current_time;
 | 
			
		||||
		ext2_inode.dtime 		= current_time;
 | 
			
		||||
		ext2_inode.atime 		= current_time.tv_sec;
 | 
			
		||||
		ext2_inode.ctime 		= current_time.tv_sec;
 | 
			
		||||
		ext2_inode.mtime 		= current_time.tv_sec;
 | 
			
		||||
		ext2_inode.dtime 		= current_time.tv_sec;
 | 
			
		||||
		ext2_inode.gid			= gid;
 | 
			
		||||
		ext2_inode.links_count	= 1;
 | 
			
		||||
		ext2_inode.blocks		= 0;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,10 +17,10 @@ namespace Kernel
 | 
			
		|||
		: m_uid(credentials.euid())
 | 
			
		||||
		, m_gid(credentials.egid())
 | 
			
		||||
	{
 | 
			
		||||
		uint64_t current_time = SystemTimer::get().get_unix_timestamp();
 | 
			
		||||
		m_atime = { .tv_sec = current_time, .tv_nsec = 0 };
 | 
			
		||||
		m_mtime = { .tv_sec = current_time, .tv_nsec = 0 };
 | 
			
		||||
		m_ctime = { .tv_sec = current_time, .tv_nsec = 0 };
 | 
			
		||||
		timespec current_time = SystemTimer::get().real_time();
 | 
			
		||||
		m_atime = current_time;
 | 
			
		||||
		m_mtime = current_time;
 | 
			
		||||
		m_ctime = current_time;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void Pipe::clone_writing()
 | 
			
		||||
| 
						 | 
				
			
			@ -57,8 +57,7 @@ namespace Kernel
 | 
			
		|||
		memmove(m_buffer.data(), m_buffer.data() + to_copy, m_buffer.size() - to_copy);
 | 
			
		||||
		MUST(m_buffer.resize(m_buffer.size() - to_copy));
 | 
			
		||||
 | 
			
		||||
		uint64_t current_time = SystemTimer::get().get_unix_timestamp();
 | 
			
		||||
		m_atime = { .tv_sec = current_time, .tv_nsec = 0 };
 | 
			
		||||
		m_atime = SystemTimer::get().real_time();
 | 
			
		||||
 | 
			
		||||
		m_semaphore.unblock();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -76,9 +75,9 @@ namespace Kernel
 | 
			
		|||
		TRY(m_buffer.resize(old_size + count));
 | 
			
		||||
		memcpy(m_buffer.data() + old_size, buffer, count);
 | 
			
		||||
 | 
			
		||||
		uint64_t current_time = SystemTimer::get().get_unix_timestamp();
 | 
			
		||||
		m_mtime = { .tv_sec = current_time, .tv_nsec = 0 };
 | 
			
		||||
		m_ctime = { .tv_sec = current_time, .tv_nsec = 0 };
 | 
			
		||||
		timespec current_time = SystemTimer::get().real_time();
 | 
			
		||||
		m_mtime = current_time;
 | 
			
		||||
		m_ctime = current_time;
 | 
			
		||||
 | 
			
		||||
		m_semaphore.unblock();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,10 +23,7 @@ namespace Kernel
 | 
			
		|||
	RamInode::RamInode(RamFileSystem& fs, mode_t mode, uid_t uid, gid_t gid)
 | 
			
		||||
			: m_fs(fs)
 | 
			
		||||
	{
 | 
			
		||||
		uint64_t current_unix_time = SystemTimer::get().get_unix_timestamp();
 | 
			
		||||
		timespec current_timespec;
 | 
			
		||||
		current_timespec.tv_sec = current_unix_time;
 | 
			
		||||
		current_timespec.tv_nsec = 0;
 | 
			
		||||
		timespec current_time = SystemTimer::get().real_time();
 | 
			
		||||
 | 
			
		||||
		m_inode_info.ino = fs.next_ino();
 | 
			
		||||
		m_inode_info.mode = mode;
 | 
			
		||||
| 
						 | 
				
			
			@ -34,9 +31,9 @@ namespace Kernel
 | 
			
		|||
		m_inode_info.uid = uid;
 | 
			
		||||
		m_inode_info.gid = gid;
 | 
			
		||||
		m_inode_info.size = 0;
 | 
			
		||||
		m_inode_info.atime = current_timespec;
 | 
			
		||||
		m_inode_info.mtime = current_timespec;
 | 
			
		||||
		m_inode_info.ctime = current_timespec;
 | 
			
		||||
		m_inode_info.atime = current_time;
 | 
			
		||||
		m_inode_info.mtime = current_time;
 | 
			
		||||
		m_inode_info.ctime = current_time;
 | 
			
		||||
		m_inode_info.blksize = fs.blksize();
 | 
			
		||||
		m_inode_info.blocks = 0;
 | 
			
		||||
		m_inode_info.dev = 0;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -811,9 +811,12 @@ namespace Kernel
 | 
			
		|||
		{
 | 
			
		||||
			case CLOCK_MONOTONIC:
 | 
			
		||||
			{
 | 
			
		||||
				uint64_t time_ms = SystemTimer::get().ms_since_boot();
 | 
			
		||||
				tp->tv_sec  =  time_ms / 1000;
 | 
			
		||||
				tp->tv_nsec = (time_ms % 1000) * 1000000;
 | 
			
		||||
				*tp = SystemTimer::get().time_since_boot();
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
			case CLOCK_REALTIME:
 | 
			
		||||
			{
 | 
			
		||||
				*tp = SystemTimer::get().real_time();
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
			default:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -74,12 +74,7 @@ namespace Kernel
 | 
			
		|||
			dwarnln("sleep woke {} ms too soon", wake_time - ms_since_boot());
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	uint64_t SystemTimer::get_unix_timestamp() const
 | 
			
		||||
	{
 | 
			
		||||
		return m_boot_time + ms_since_boot() / 1000;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	timespec SystemTimer::get_real_time() const
 | 
			
		||||
	timespec SystemTimer::real_time() const
 | 
			
		||||
	{
 | 
			
		||||
		auto result = time_since_boot();
 | 
			
		||||
		result.tv_sec += m_boot_time;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue