Nicholas Nethercote 3d12e0e9db Terminology change: previously in Memcheck we had the four states:
noaccess, writable, readable, other

Now they are:

   noaccess, undefined, defined, partdefined

As a result, the following names:

   make_writable, make_readable,
   check_writable, check_readable, check_defined

have become:

   make_mem_undefined, make_mem_defined,
   check_mem_is_addressable, check_mem_is_defined, check_value_is_defined

(and likewise for the upper-case versions for client request macros).
The old MAKE_* and CHECK_* macros still work for backwards compatibility.

This is much better, because the old names were subtly misleading.  For
example:

  - "readable" really meant "readable and writable".
  - "writable" really meant "writable and maybe readable, depending on how
    the read value is used".
  - "check_writable" really meant "check writable or readable"

The new names avoid these problems.

The recently-added macro which was called MAKE_DEFINED is now
MAKE_MEM_DEFINED_IF_ADDRESSABLE.

I also corrected the spelling of "addressable" in numerous places in
memcheck.h.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5802
2006-03-31 11:57:59 +00:00

40 lines
826 B
C

#include <time.h>
#include <unistd.h>
#include <stdio.h>
#include <errno.h>
#include <signal.h>
#include "../memcheck.h"
/* Check that a syscall's POST function gets called if it completes
due to being interrupted. nanosleep is used here, because it
writes a result even if it fails. wait*() could also be used,
because they successully complete if interrupted by SIGCHLD.
*/
static void handler(int s)
{
}
int main()
{
struct timespec req, rem;
int ret;
req.tv_sec = 2;
req.tv_nsec = 0;
signal(SIGALRM, handler);
alarm(1);
ret = nanosleep(&req, &rem);
if (ret != -1 || errno != EINTR) {
printf("FAILED: expected nanosleep to be interrupted\n");
} else {
VALGRIND_CHECK_VALUE_IS_DEFINED(rem);
printf("PASSED\n"); /* assuming CHECK_VALUE_IS_DEFINED doesn't print anything */
}
return 0;
}