Skip to content

Commit

Permalink
dbgutil: add hook functions for RW locks
Browse files Browse the repository at this point in the history
  • Loading branch information
Qix- committed Jan 19, 2025
1 parent 569e609 commit 7a90367
Showing 1 changed file with 68 additions and 0 deletions.
68 changes: 68 additions & 0 deletions oro-dbgutil/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -175,3 +175,71 @@ pub extern "C" fn __oro_dbgutil_lock_release(lock_self_addr_do_not_change_this_p
);
}
}

/// Tells the lock tracker that a RW lock reader is about to be acquired.
#[no_mangle]
#[link_section = ".text.force_keep"]
pub extern "C" fn __oro_dbgutil_lock_acquire_reader(
lock_self_addr_do_not_change_this_parameter: usize,
) {
unsafe {
asm!(
"/*{}*/",
"nop",
in(reg) lock_self_addr_do_not_change_this_parameter,
options(nostack, nomem, preserves_flags)
);
}
}

/// Tells the lock tracker that a R/W lock reader has been released.
///
/// `this` must be the same value as passed to `__oro_dbgutil_lock_acquire_reader`.
#[no_mangle]
#[link_section = ".text.force_keep"]
pub extern "C" fn __oro_dbgutil_lock_release_reader(
lock_self_addr_do_not_change_this_parameter: usize,
) {
unsafe {
asm!(
"/*{}*/",
"nop",
in(reg) lock_self_addr_do_not_change_this_parameter,
options(nostack, nomem, preserves_flags)
);
}
}

/// Tells the lock tracker that a RW lock writer is about to be acquired.
#[no_mangle]
#[link_section = ".text.force_keep"]
pub extern "C" fn __oro_dbgutil_lock_acquire_writer(
lock_self_addr_do_not_change_this_parameter: usize,
) {
unsafe {
asm!(
"/*{}*/",
"nop",
in(reg) lock_self_addr_do_not_change_this_parameter,
options(nostack, nomem, preserves_flags)
);
}
}

/// Tells the lock tracker that a R/W lock writer has been released.
///
/// `this` must be the same value as passed to `__oro_dbgutil_lock_acquire_reader`.
#[no_mangle]
#[link_section = ".text.force_keep"]
pub extern "C" fn __oro_dbgutil_lock_release_writer(
lock_self_addr_do_not_change_this_parameter: usize,
) {
unsafe {
asm!(
"/*{}*/",
"nop",
in(reg) lock_self_addr_do_not_change_this_parameter,
options(nostack, nomem, preserves_flags)
);
}
}

0 comments on commit 7a90367

Please sign in to comment.