|
From: Julian S. <js...@ac...> - 2009-05-30 11:00:27
|
Ok in principle, but some comments: > > Adding support for the ANNOTATE_*() macro's in drd/drd.h is probably > > not too hard. I'll have a look at it. > > Implementation-wise you need to support Annotate*() functions, or > rewrite ANNOTATE*() macro's using client requests and support those > client requests. > I find the approach with Annotate*() functions simpler to maintain. I prefer that the basic thing that is implemented and documented to be the ANNOTATE_* macros, not the Annotate*() functions. The macros can be implemented with just a header file, like the Memcheck macros. The functions require shared objects etc and therefore create a dependency on a new library (IIUC), which isn't desirable. There are a lot of these requests, which is a big overhead w.r.t. verifying that the implementation is correct and keeping it correct. Are they all really necessary? I wonder if you can implement these using a smaller subset, based on the idea of sending an abstract message between threads. Suppose you had a ANNOTATE_SENDTO_SYNC_OBJECT(address) and ANNOTATE_RECVFROM_SYNC_OBJECT(address) which create a h-b edge through the sync object. How many of these requests could be implemented using just those two? J |