Kernel: Rename TimerHandler to SystemTimer
I changed SystemTimer to only handle the "best" supported timer it can initialize.
This commit is contained in:
		
							parent
							
								
									ca5a097ef5
								
							
						
					
					
						commit
						c732297623
					
				|  | @ -15,11 +15,11 @@ namespace Kernel | |||
| 		virtual timespec time_since_boot() const = 0; | ||||
| 	}; | ||||
| 
 | ||||
| 	class TimerHandler : public Timer | ||||
| 	class SystemTimer : public Timer | ||||
| 	{ | ||||
| 	public: | ||||
| 		static void initialize(); | ||||
| 		static TimerHandler& get(); | ||||
| 		static SystemTimer& get(); | ||||
| 		static bool is_initialized(); | ||||
| 
 | ||||
| 		virtual uint64_t ms_since_boot() const override; | ||||
|  | @ -27,10 +27,10 @@ namespace Kernel | |||
| 		 | ||||
| 		void sleep(uint64_t) const; | ||||
| 
 | ||||
| 		uint64_t get_unix_timestamp(); | ||||
| 		uint64_t get_unix_timestamp() const; | ||||
| 
 | ||||
| 	private: | ||||
| 		TimerHandler() = default; | ||||
| 		SystemTimer() = default; | ||||
| 
 | ||||
| 		void initialize_timers(); | ||||
| 
 | ||||
|  |  | |||
|  | @ -58,7 +58,7 @@ namespace Debug | |||
| 
 | ||||
| 	void print_prefix(const char* file, int line) | ||||
| 	{ | ||||
| 		auto ms_since_boot = Kernel::TimerHandler::is_initialized() ? Kernel::TimerHandler::get().ms_since_boot() : 0; | ||||
| 		auto ms_since_boot = Kernel::SystemTimer::is_initialized() ? Kernel::SystemTimer::get().ms_since_boot() : 0; | ||||
| 		BAN::Formatter::print(Debug::putchar, "[{5}.{3}] {}:{}: ", ms_since_boot / 1000, ms_since_boot % 1000, file, line); | ||||
| 	} | ||||
| 
 | ||||
|  |  | |||
|  | @ -46,7 +46,7 @@ namespace Kernel | |||
| 					); | ||||
| 					s_instance->m_device_lock.unlock(); | ||||
| 
 | ||||
| 					Kernel::TimerHandler::get().sleep(1); | ||||
| 					Kernel::SystemTimer::get().sleep(1); | ||||
| 				} | ||||
| 			}, nullptr | ||||
| 		); | ||||
|  |  | |||
|  | @ -384,7 +384,7 @@ namespace Kernel | |||
| 		if (error_or.error().get_error_code() != ENOENT) | ||||
| 			return error_or.error(); | ||||
| 
 | ||||
| 		uint64_t current_time = TimerHandler::get().get_unix_timestamp(); | ||||
| 		uint64_t current_time = SystemTimer::get().get_unix_timestamp(); | ||||
| 
 | ||||
| 		Ext2::Inode ext2_inode; | ||||
| 		ext2_inode.mode			= mode; | ||||
|  |  | |||
|  | @ -17,7 +17,7 @@ namespace Kernel | |||
| 		: m_uid(credentials.euid()) | ||||
| 		, m_gid(credentials.egid()) | ||||
| 	{ | ||||
| 		uint64_t current_time = TimerHandler::get().get_unix_timestamp(); | ||||
| 		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 }; | ||||
|  | @ -57,7 +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 = TimerHandler::get().get_unix_timestamp(); | ||||
| 		uint64_t current_time = SystemTimer::get().get_unix_timestamp(); | ||||
| 		m_atime = { .tv_sec = current_time, .tv_nsec = 0 }; | ||||
| 
 | ||||
| 		m_semaphore.unblock(); | ||||
|  | @ -76,7 +76,7 @@ namespace Kernel | |||
| 		TRY(m_buffer.resize(old_size + count)); | ||||
| 		memcpy(m_buffer.data() + old_size, buffer, count); | ||||
| 
 | ||||
| 		uint64_t current_time = TimerHandler::get().get_unix_timestamp(); | ||||
| 		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 }; | ||||
| 
 | ||||
|  |  | |||
|  | @ -23,7 +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 = TimerHandler::get().get_unix_timestamp(); | ||||
| 		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; | ||||
|  |  | |||
|  | @ -108,8 +108,8 @@ namespace Kernel::Input | |||
| 	{ | ||||
| 		if (device == 1) | ||||
| 			IO::outb(PS2::IOPort::COMMAND, PS2::Command::WRITE_TO_SECOND_PORT); | ||||
| 		uint64_t timeout = TimerHandler::get().ms_since_boot() + s_device_timeout_ms; | ||||
| 		while (TimerHandler::get().ms_since_boot() < timeout) | ||||
| 		uint64_t timeout = SystemTimer::get().ms_since_boot() + s_device_timeout_ms; | ||||
| 		while (SystemTimer::get().ms_since_boot() < timeout) | ||||
| 		{ | ||||
| 			if (!(IO::inb(PS2::IOPort::STATUS) & PS2::Status::INPUT_FULL)) | ||||
| 			{ | ||||
|  | @ -122,8 +122,8 @@ namespace Kernel::Input | |||
| 
 | ||||
| 	static BAN::ErrorOr<uint8_t> device_read_byte() | ||||
| 	{ | ||||
| 		uint64_t timeout = TimerHandler::get().ms_since_boot() + s_device_timeout_ms; | ||||
| 		while (TimerHandler::get().ms_since_boot() < timeout) | ||||
| 		uint64_t timeout = SystemTimer::get().ms_since_boot() + s_device_timeout_ms; | ||||
| 		while (SystemTimer::get().ms_since_boot() < timeout) | ||||
| 			if (IO::inb(PS2::IOPort::STATUS) & PS2::Status::OUTPUT_FULL) | ||||
| 				return IO::inb(PS2::IOPort::DATA); | ||||
| 		return BAN::Error::from_error_code(ErrorCode::PS2_Timeout); | ||||
|  |  | |||
|  | @ -216,7 +216,7 @@ namespace Kernel::Input | |||
| 
 | ||||
| 		if (event.pressed() && event.key == Input::Key::F11) | ||||
| 		{ | ||||
| 			auto time = TimerHandler::get().time_since_boot(); | ||||
| 			auto time = SystemTimer::get().time_since_boot(); | ||||
| 			dprintln("{}.{9} s", time.tv_sec, time.tv_nsec); | ||||
| 		} | ||||
| 
 | ||||
|  |  | |||
|  | @ -473,7 +473,7 @@ namespace Kernel | |||
| 
 | ||||
| 	BAN::ErrorOr<long> Process::sys_sleep(int seconds) | ||||
| 	{ | ||||
| 		TimerHandler::get().sleep(seconds * 1000); | ||||
| 		SystemTimer::get().sleep(seconds * 1000); | ||||
| 		return 0; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -811,7 +811,7 @@ namespace Kernel | |||
| 		{ | ||||
| 			case CLOCK_MONOTONIC: | ||||
| 			{ | ||||
| 				uint64_t time_ms = TimerHandler::get().ms_since_boot(); | ||||
| 				uint64_t time_ms = SystemTimer::get().ms_since_boot(); | ||||
| 				tp->tv_sec  =  time_ms / 1000; | ||||
| 				tp->tv_nsec = (time_ms % 1000) * 1000000; | ||||
| 				break; | ||||
|  |  | |||
|  | @ -113,7 +113,7 @@ namespace Kernel | |||
| 	{ | ||||
| 		VERIFY_CLI(); | ||||
| 
 | ||||
| 		uint64_t current_time = TimerHandler::get().ms_since_boot(); | ||||
| 		uint64_t current_time = SystemTimer::get().ms_since_boot(); | ||||
| 		while (!m_sleeping_threads.empty() && m_sleeping_threads.front().wake_time <= current_time) | ||||
| 		{ | ||||
| 			Thread* thread = m_sleeping_threads.front().thread; | ||||
|  |  | |||
|  | @ -100,7 +100,7 @@ namespace Kernel | |||
| 	{ | ||||
| 		uint8_t device_index = this->device_index(device); | ||||
| 		io_write(ATA_PORT_DRIVE_SELECT, 0xA0 | (device_index << 4)); | ||||
| 		TimerHandler::get().sleep(1); | ||||
| 		SystemTimer::get().sleep(1); | ||||
| 	} | ||||
| 
 | ||||
| 	ATABus::DeviceType ATABus::identify(const ATADevice& device, uint16_t* buffer) | ||||
|  | @ -111,7 +111,7 @@ namespace Kernel | |||
| 		io_write(ATA_PORT_CONTROL, ATA_CONTROL_nIEN); | ||||
| 
 | ||||
| 		io_write(ATA_PORT_COMMAND, ATA_COMMAND_IDENTIFY); | ||||
| 		TimerHandler::get().sleep(1); | ||||
| 		SystemTimer::get().sleep(1); | ||||
| 
 | ||||
| 		// No device on port
 | ||||
| 		if (io_read(ATA_PORT_STATUS) == 0) | ||||
|  | @ -135,7 +135,7 @@ namespace Kernel | |||
| 			} | ||||
| 
 | ||||
| 			io_write(ATA_PORT_COMMAND, ATA_COMMAND_IDENTIFY_PACKET); | ||||
| 			TimerHandler::get().sleep(1); | ||||
| 			SystemTimer::get().sleep(1); | ||||
| 
 | ||||
| 			if (auto res = wait(true); res.is_error()) | ||||
| 			{ | ||||
|  | @ -304,7 +304,7 @@ namespace Kernel | |||
| 			io_write(ATA_PORT_LBA2, (uint8_t)(lba >> 16)); | ||||
| 			io_write(ATA_PORT_COMMAND, ATA_COMMAND_WRITE_SECTORS); | ||||
| 
 | ||||
| 			TimerHandler::get().sleep(1); | ||||
| 			SystemTimer::get().sleep(1); | ||||
| 
 | ||||
| 			for (uint32_t sector = 0; sector < sector_count; sector++) | ||||
| 			{ | ||||
|  |  | |||
|  | @ -6,29 +6,29 @@ | |||
| namespace Kernel | ||||
| { | ||||
| 
 | ||||
| 	static TimerHandler* s_instance = nullptr; | ||||
| 	static SystemTimer* s_instance = nullptr; | ||||
| 
 | ||||
| 	void TimerHandler::initialize() | ||||
| 	void SystemTimer::initialize() | ||||
| 	{ | ||||
| 		ASSERT(s_instance == nullptr); | ||||
| 		auto* temp = new TimerHandler; | ||||
| 		auto* temp = new SystemTimer; | ||||
| 		ASSERT(temp); | ||||
| 		temp->initialize_timers(); | ||||
| 		s_instance = temp; | ||||
| 	} | ||||
| 
 | ||||
| 	TimerHandler& TimerHandler::get() | ||||
| 	SystemTimer& SystemTimer::get() | ||||
| 	{ | ||||
| 		ASSERT(s_instance); | ||||
| 		return *s_instance; | ||||
| 	} | ||||
| 
 | ||||
| 	bool TimerHandler::is_initialized() | ||||
| 	bool SystemTimer::is_initialized() | ||||
| 	{ | ||||
| 		return !!s_instance; | ||||
| 	} | ||||
| 
 | ||||
| 	void TimerHandler::initialize_timers() | ||||
| 	void SystemTimer::initialize_timers() | ||||
| 	{ | ||||
| 		m_rtc = MUST(BAN::UniqPtr<RTC>::create()); | ||||
| 		m_boot_time = BAN::to_unix_time(m_rtc->get_current_time()); | ||||
|  | @ -54,17 +54,17 @@ namespace Kernel | |||
| 		Kernel::panic("Could not initialize any timer"); | ||||
| 	} | ||||
| 
 | ||||
| 	uint64_t TimerHandler::ms_since_boot() const | ||||
| 	uint64_t SystemTimer::ms_since_boot() const | ||||
| 	{ | ||||
| 		return m_timer->ms_since_boot(); | ||||
| 	} | ||||
| 
 | ||||
| 	timespec TimerHandler::time_since_boot() const | ||||
| 	timespec SystemTimer::time_since_boot() const | ||||
| 	{ | ||||
| 		return m_timer->time_since_boot(); | ||||
| 	} | ||||
| 
 | ||||
| 	void TimerHandler::sleep(uint64_t ms) const | ||||
| 	void SystemTimer::sleep(uint64_t ms) const | ||||
| 	{ | ||||
| 		if (ms == 0) | ||||
| 			return; | ||||
|  | @ -74,7 +74,7 @@ namespace Kernel | |||
| 			dwarnln("sleep woke {} ms too soon", wake_time - ms_since_boot()); | ||||
| 	} | ||||
| 
 | ||||
| 	uint64_t TimerHandler::get_unix_timestamp() | ||||
| 	uint64_t SystemTimer::get_unix_timestamp() const | ||||
| 	{ | ||||
| 		return m_boot_time + ms_since_boot() / 1000; | ||||
| 	} | ||||
|  |  | |||
|  | @ -144,7 +144,7 @@ extern "C" void kernel_main() | |||
| 	InterruptController::initialize(cmdline.force_pic); | ||||
| 	dprintln("Interrupt controller initialized"); | ||||
| 
 | ||||
| 	TimerHandler::initialize(); | ||||
| 	SystemTimer::initialize(); | ||||
| 	dprintln("Timers initialized"); | ||||
| 
 | ||||
| 	DevFileSystem::initialize(); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue