I've sometimes thought it would be useful to have a "transaction"
system call that is like a write + read combined into one:
int transaction(int fd, char *req, size_t req_nb,
char *reply, size_t reply_nb);
as a way to provide a general request/reply interface for special
files.
That would take N system calls instead of one, which could have a
performance impact if you need to read the counters frequently (which
I believe you do in some performance monitoring situations).
Paul.
-