The i386_clr_watch function will disable the indicated watch point within the specified debug register set.
The i386_set_watch function will set up the specified debug registers as indicated by the arguments. The watchnum argument specifies which watch register is used, 0, 1, 2, 3, or -1. If watchnum is -1, a free watch register is found and used. If there are no free watch registers, an error code of -1 is returned. The watchaddr argument specifies the watch address, size specifies the size in bytes of the area to be watched (1, 2, or 4 bytes), and access specifies the type of watch point:
DBREG_DR7_EXEC An execution breakpoint.
DBREG_DR7_WRONLY Break only when the watch area is written to.
DBREG_DR7_RDWR Break when the watch area is read from or written
Note that these functions do not actually set or clear breakpoints; they manipulate the indicated debug register set. You must use ptrace(2) to retrieve and install the debug register values for a process.
The i386_clr_watch function returns 0 on success, or -1 if watchnum is invalid (not in the range of 0-3).
The i386_set_watch function will return the watchnum argument, or the watchnum actually used in the case that watchnum is -1 on success. On error, i386_set_watch will return -1 indicating that the watchpoint could not be set up because either no more watchpoints are available, or watchnum, size, or access is invalid.