Files @ d0a14f973771
Branch filter:

Location: vmkdrivers/BLD/build/HEADERS/vmkapi-current-all-public/vmkernel64/release/base/vmkapi_proc.h - annotation

unknown
ESXi-5.0-U1
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
/* **********************************************************
 * 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_ */
/** @} */