If this is OT here, my apologies and could you please advise where best
to go.

I generate my emacs C tag files using etags:

cd ~/c
echo Calculating local tags ....
etags -R --languages=C .
echo Calculating kernel src tags ....
cd /usr/src/linux
sudo etags --languages=C -R .
echo done!

I have both resulting tags in my tags table list in emacs.

But if I tag search "read" from a local file with, e.g, this line:

while ((n = read(STDIN_FILENO, buf, BUFFSIZE)) > 0)

then emacs is bring up rem_read ina C file:

rem_read(int remfd)

Is there a way to make it more selective? Any tips at all with TAGS to
make them a little more "clever" - e.g to bring up constant definitions
in the header as opposed to another use of that particular define in a C

In addition are there any programmers here using emacs/ecb in
conjunction with senator? Are there are tools in emacs to map a
potential call hierarchy/graph for C code?