limine-bootloader/limine-rs

Isn't the `LimineEntryPoint` type missing `extern "C"`?

Closed this issue · 0 comments

Currently, the LimineEntryPoint type wraps an fn() -> !. Is there a reason why calling this function with the Rust calling convention works as expected? Shouldn't it be extern "C" fn() -> !?

Also, I've got a question:

The LimineEntryPointRequest structure stores a LiminePtr<LimineEntryPoint> internally. Is there a reason for that? I mean, LiminePtr<LimineEntryPoint> basically translates to *mut fn() -> !, and it pretty weird knowing that the "real" type is fn() -> !. In fact, the LiminePtr::<LimineEntryPoint>::new method creates a LiminePtr by casting the input fn() -> ! into a *mut fn() -> !. Why not simply using Option<LimineEntryPoint> in LimineEntryPointRequest?