/* IBM_PROLOG_BEGIN_TAG                                                   */
/* This is an automatically generated prolog.                             */
/*                                                                        */
/* bos720 src/bos/usr/ccs/lib/libwpardr/wpardr.h 1.5                      */
/*                                                                        */
/* Licensed Materials - Property of IBM                                   */
/*                                                                        */
/* COPYRIGHT International Business Machines Corp. 2006,2008              */
/* All Rights Reserved                                                    */
/*                                                                        */
/* US Government Users Restricted Rights - Use, duplication or            */
/* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.      */
/*                                                                        */
/* IBM_PROLOG_END_TAG                                                     */
/* @(#)11	1.5 src/bos/usr/ccs/lib/libwpardr/wpardr.h, wpardr, bos720 6/15/08 12:06:20 */

#ifndef _H_WPARDR
#define _H_WPARDR

/*
 * COMPONENT_NAME:	WPARDR
 *
 * FUNCTIONS:		registerDrEvent
 *			triggerDrEvent
 *			unregisterDrEvent
 *			setAutoUnregister
 *			getAutoUnregister
 *			setLogFd
 *			setTraceFd
 *
 * ORIGINS:		27
 */

#ifdef __cplusplus
extern "C" {
#endif

#include <sys/corralid.h>
#include <sys/types.h>

/* describes a DR event */
typedef struct drEvent *drEvent_t;

/* describes a DR phase */
typedef struct drPhase *drPhase_t;

/* pre-defined events for WPAR migration */
extern drEvent_t wmigEvent;
extern drEvent_t wmigCheckpointEvent;
extern drEvent_t wmigRestartEvent;

/* pre-defined phases */
extern drPhase_t undoPrePhase;
extern drPhase_t undoDoitPhase;
extern drPhase_t checkPhase;
extern drPhase_t prePhase;
extern drPhase_t doitPhase;
extern drPhase_t postPhase;

/* first version */
#define WPARDR_V1		1

/* flag values */
#define WPARDR_IGNORE_ERRORS	0x00000001	/* continue the DR event even */
						/* if errors are encountered  */

/* for convenience */
typedef cid_t wparId_t;

/* arguments required for the wmig event */
struct wmigArgs
{
	int32_t		version;
	uint16_t	wparId;
	char *		wparName;
};

typedef struct wmigArgs wmigArgs_t;

/* arguments required for the wmig-checkpoint event */
struct wmigCheckpointArgs
{
	int32_t		version;
	uint16_t	wparId;
	char *		wparName;
	char *		stateFile;
};

typedef struct wmigCheckpointArgs wmigCheckpointArgs_t;

/* arguments required for the wmig-restart event */
struct wmigRestartArgs
{
	int32_t		version;
	uint16_t	wparId;
	char *		wparName;
	char *		stateFile;
};

typedef struct wmigRestartArgs wmigRestartArgs_t;

extern int registerDrEvent(
	drEvent_t	drEventP,
	void *		argsP);

extern int triggerDrEvent(
	drEvent_t	drEventP,
	drPhase_t	drPhaseP,
	void *		argsP,
	int32_t *	timeoutP,
	int32_t		flags);

extern int unregisterDrEvent(
	drEvent_t	drEventP,
	void *		argsP);

extern int setAutoUnregister(
	wparId_t	wparId,
	boolean_t	choice);

extern int getAutoUnregister(
	wparId_t	wparId,
	boolean_t *	choiceP);

extern int setLogFd(
	int		logFd);

extern int setTraceFd(
	int		traceFd);

#ifdef __cplusplus
}
#endif

#endif /* _H_WPARDR */
