blob: 3c0c30ffe21f7e2f26c6d27121b20aa377dd7f89 [file] [log] [blame]
/* -*- Mode: C++; tab-width: 8; c-basic-offset: 2; indent-tabs-mode: nil; -*- */
#ifndef RR_PROCESS_SYSCALL_H_
#define RR_PROCESS_SYSCALL_H_
#include "util.h"
namespace rr {
class RecordTask;
/**
* Prepare |t| to enter its current syscall event. Return ALLOW_SWITCH if
* a context-switch is allowed for |t|, PREVENT_SWITCH if not.
*/
Switchable rec_prepare_syscall(RecordTask* t);
/**
* Any prepared syscall is not going to happen (because it was aborted by
* tracee seccomp filter). Cancel any preparation work.
*/
void rec_abort_prepared_syscall(RecordTask* t);
/**
* Prepare |t| for its current syscall event to be interrupted and
* possibly restarted.
*/
void rec_prepare_restart_syscall(RecordTask* t);
/**
* Restore any argument registers fudged for |t|'s current syscall and
* store any nondeterministic outparam data.
*/
void rec_process_syscall(RecordTask* t);
/**
* Apply any necessary processing for an executed sigreturn.
*/
void rec_did_sigreturn(RecordTask* t);
} // namespace rr
#endif /* RR_PROCESS_SYSCALL_H_ */