218 lines
6.6 KiB
C
218 lines
6.6 KiB
C
/* **********************************************************
|
|
* Copyright 1998 - 2009 VMware, Inc. All rights reserved.
|
|
* **********************************************************/
|
|
|
|
/*
|
|
* @VMKAPIMOD_LICENSE@
|
|
*/
|
|
|
|
/*
|
|
***********************************************************************
|
|
* Proc */ /**
|
|
* \defgroup Proc ProcFS Emulation Interfaces
|
|
*
|
|
* Interfaces relating to the procfs emulation
|
|
*
|
|
* @{
|
|
***********************************************************************
|
|
*/
|
|
|
|
#ifndef _VMKAPI_PROC_H_
|
|
#define _VMKAPI_PROC_H_
|
|
|
|
/** \cond never */
|
|
#ifndef VMK_HEADER_INCLUDED_FROM_VMKAPI_H
|
|
#error This vmkapi file should never be included directly but only via vmkapi.h
|
|
#endif
|
|
/** \endcond never */
|
|
|
|
/**
|
|
* \brief Top-level parent nodess
|
|
*/
|
|
typedef enum vmk_ProcEntryParent {
|
|
VMK_PROC_PRIVATE = -1,
|
|
VMK_PROC_ROOT = 0,
|
|
VMK_PROC_ROOT_DRIVER,
|
|
VMK_PROC_ROOT_NET,
|
|
VMK_PROC_ROOT_SCSI,
|
|
VMK_PROC_ROOT_BUS,
|
|
VMK_PROC_MAX_PREDEF,
|
|
} vmk_ProcEntryParent;
|
|
|
|
/** Max length of proc name including terminating nul. */
|
|
#define VMK_PROC_MAX_NAME 64
|
|
|
|
/** Max length that can be read during a proc read */
|
|
#define VMK_PROC_READ_MAX (128 * 1024)
|
|
|
|
typedef struct vmk_ProcEntryInt vmk_ProcEntryInt, *vmk_ProcEntry;
|
|
|
|
typedef int (*vmk_ProcRead)(vmk_ProcEntry vpe, char *buffer, int *len);
|
|
typedef int (*vmk_ProcWrite)(vmk_ProcEntry vpe, char *buffer, int *len);
|
|
|
|
/*
|
|
***********************************************************************
|
|
* vmk_ProcEntryCreate -- */ /**
|
|
*
|
|
* \ingroup Proc
|
|
* \brief Allocate and initialize proc entry structure
|
|
*
|
|
* \note Requires that the module heap be initialized.
|
|
*
|
|
* \param[out] vpe Pointer to a new vmk proc entry is returned.
|
|
* \param[in] moduleID Module ID who manages the created proc entry.
|
|
* \param[in] name Name of the proc entry, 0 terminated string.
|
|
* \param[in] isDir Specify if this proc entry is directory or not.
|
|
*
|
|
* \retval VMK_OK vmk proc entry was successfully initialized
|
|
* \retval VMK_NO_MEMORY vmk proc entry could not be allocated
|
|
* \retval VMK_NO_MODULE_HEAP The module has no heap to allocate from
|
|
*
|
|
***********************************************************************
|
|
*/
|
|
VMK_ReturnStatus vmk_ProcEntryCreate(
|
|
vmk_ProcEntry *vpe,
|
|
vmk_ModuleID moduleID,
|
|
const char *name,
|
|
vmk_Bool isDir);
|
|
|
|
/*
|
|
***********************************************************************
|
|
* vmk_ProcEntryDestroy -- */ /**
|
|
*
|
|
* \ingroup Proc
|
|
* \brief Frees the proc entry structure
|
|
*
|
|
* \param[in] vpe Pointer to the vmk proc entry to be freed.
|
|
*
|
|
***********************************************************************
|
|
*/
|
|
void vmk_ProcEntryDestroy(
|
|
vmk_ProcEntry vpe);
|
|
|
|
/*
|
|
***********************************************************************
|
|
* vmk_ProcEntrySetup -- */ /**
|
|
*
|
|
* \ingroup Proc
|
|
* \brief Sets up the proc entry structure
|
|
*
|
|
* \param[in] vpe Pointer to the vmk proc entry to setup.
|
|
* \param[in] parent Pointer to the parent vmk proc entry.
|
|
* \param[in] read Read handler for this proc entry.
|
|
* \param[in] write Write handler for this proc entry.
|
|
* \param[in] canBlock Specify if user need to block.
|
|
* \param[in] private Private data for this proc entry.
|
|
*
|
|
***********************************************************************
|
|
*/
|
|
void vmk_ProcEntrySetup(
|
|
vmk_ProcEntry vpe,
|
|
vmk_ProcEntry parent,
|
|
vmk_ProcRead read,
|
|
vmk_ProcWrite write,
|
|
vmk_Bool canBlock,
|
|
void *private);
|
|
|
|
/*
|
|
***********************************************************************
|
|
* vmk_ProcEntryGetPrivate -- */ /**
|
|
*
|
|
* \ingroup Proc
|
|
* \brief Returns private data of a proc entry
|
|
*
|
|
* \param[in] vpe Pointer to the vmk proc entry.
|
|
*
|
|
* \retval Pointer to the private data
|
|
*
|
|
***********************************************************************
|
|
*/
|
|
void* vmk_ProcEntryGetPrivate(
|
|
vmk_ProcEntry vpe);
|
|
|
|
/*
|
|
***********************************************************************
|
|
* vmk_ProcEntryGetGUID -- */ /**
|
|
*
|
|
* \ingroup Proc
|
|
* \brief Returns UUID of a proc entry
|
|
*
|
|
* \param[in] vpe Pointer to the vmk proc entry.
|
|
*
|
|
* \retval UUID of the proc entry.
|
|
*
|
|
***********************************************************************
|
|
*/
|
|
vmk_uint32 vmk_ProcEntryGetGUID(
|
|
vmk_ProcEntry vpe);
|
|
|
|
/*
|
|
***********************************************************************
|
|
* vmk_ProcRegister -- */ /**
|
|
*
|
|
* \ingroup Proc
|
|
* \brief Invoke VMKernel function to register a proc entry
|
|
*
|
|
* \param[in] vpe Pointer to the vmk proc entry to be registered.
|
|
*
|
|
***********************************************************************
|
|
*/
|
|
void vmk_ProcRegister(
|
|
vmk_ProcEntry vpe);
|
|
|
|
/*
|
|
***********************************************************************
|
|
* vmk_ProcUnRegister -- */ /**
|
|
*
|
|
* \ingroup Proc
|
|
* \brief Invoke VMKernel function to remove a previously registered proc
|
|
* entry from the /proc file system.
|
|
*
|
|
* \param[in] vpe Pointer to the vmk proc entry to be registered.
|
|
*
|
|
* \retval VMK_OK Unregister successful
|
|
* \retval VMK_NOT_FOUND vmk proc entry not found
|
|
*
|
|
***********************************************************************
|
|
*/
|
|
VMK_ReturnStatus vmk_ProcUnRegister(
|
|
vmk_ProcEntry vpe);
|
|
|
|
/*
|
|
***********************************************************************
|
|
* vmk_ProcSetupPredefinedNode -- */ /**
|
|
*
|
|
* \ingroup Proc
|
|
* \brief Invoke VMKernel function to hook up pre-defined proc node
|
|
*
|
|
* \param[in] idx Index of the pre-defined proc node
|
|
* \param[in] vpe Pointer to the pre-defined proc node to be setup.
|
|
* \param[in] root Specify if vmk proc entry is the root node
|
|
*
|
|
***********************************************************************
|
|
*/
|
|
void vmk_ProcSetupPredefinedNode(
|
|
vmk_ProcEntryParent idx,
|
|
vmk_ProcEntry vpe,
|
|
vmk_Bool root);
|
|
|
|
/*
|
|
***********************************************************************
|
|
* vmk_ProcRemovePredefinedNode -- */ /**
|
|
*
|
|
* \ingroup Proc
|
|
* \brief Invoke VMKernel function to remove pre-defined proc node
|
|
*
|
|
* \param[in] idx Index of the pre-defined proc node
|
|
* \param[in] vpe Pointer to the pre-defined proc node to be removed.
|
|
* \param[in] root Specify if vmk proc entry is the root node
|
|
*
|
|
***********************************************************************
|
|
*/
|
|
void vmk_ProcRemovePredefinedNode(
|
|
vmk_ProcEntryParent idx,
|
|
vmk_ProcEntry vpe,
|
|
vmk_Bool root);
|
|
|
|
#endif /* _VMKAPI_PROC_H_ */
|
|
/** @} */
|