Example #1
0
static bool check_with_child(struct ptr_valid_batch *batch,
                             const void *p, size_t size, bool is_write)
{
    char ret;

    if (!child_alive(batch)) {
        if (!create_child(batch))
            return false;
    }

    if (write(batch->to_child, &p, sizeof(p))
            + write(batch->to_child, &size, sizeof(size))
            + write(batch->to_child, &is_write, sizeof(is_write))
            != sizeof(p) + sizeof(size) + sizeof(is_write)) {
        finish_child(batch);
        errno = EFAULT;
        return false;
    }

    if (read(batch->from_child, &ret, sizeof(ret)) != sizeof(ret)) {
        finish_child(batch);
        errno = EFAULT;
        return false;
    }
    return true;
}
Example #2
0
void ptr_valid_batch_end(struct ptr_valid_batch *batch)
{
	if (child_alive(batch))
		finish_child(batch);
	free(batch->maps);
}