/*
 * Note: this file originally auto-generated by mib2c using
 *  : mib2c.container.conf,v 1.8 2006/07/26 15:58:26 dts12 Exp $
 */
/* Portions of this file are subject to the following copyright(s).  See
 * the Net-SNMP's COPYING file for more details and other copyrights
 * that may apply:
 */
/*
 * Portions of this file are copyrighted by:
 * Copyright (C) 2007 Apple, Inc. All rights reserved.
 * Use is subject to license terms specified in the COPYING file
 * distributed with the Net-SNMP package.
 */
#ifndef HRSWRUNPERFTABLE_H
#define HRSWRUNPERFTABLE_H

config_require(host/hrSWRunTable)

/*
 * function declarations 
 */
void            init_hrSWRunPerfTable(void);
void            initialize_table_hrSWRunPerfTable(void);
Netsnmp_Node_Handler hrSWRunPerfTable_handler;

/*
 * column number definitions for table hrSWRunPerfTable 
 */
#define COLUMN_HRSWRUNPERFCPU		1
#define COLUMN_HRSWRUNPERFMEM		2
#endif                          /* HRSWRUNPERFTABLE_H */
