1
0
Files
irix-657m-src/eoe/include/grio.h
2022-09-29 17:59:04 +03:00

185 lines
5.0 KiB
C

/* Copyright (c) 1990, 1991 UNIX System Laboratories, Inc. */
/* Copyright (c) 1984, 1986, 1987, 1988, 1989, 1990 AT&T */
/* All Rights Reserved */
/* THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF */
/* UNIX System Laboratories, Inc. */
/* The copyright notice above does not evidence any */
/* actual or intended publication of such source code. */
#ident "$Revision: 1.10 $"
#ifndef _GRIO_DOT_H_
#define _GRIO_DOT_H_
#ifdef __cplusplus
extern "C" {
#endif
#include <sys/types.h>
#include <sys/grio.h>
/*
* maximum number of GRIO streams allowed without a license
*/
#define DEFAULT_GRIO_STREAMS 4
/*
* maximum number of GRIO streams allowed with an "unlimited" license
*/
#define UNLIMITED_GRIO_STREAMS MAX_NUM_RESERVATIONS
/*
* Subcommands for the GRIO_GET_STATS command.
*/
#define GRIO_FILE_RESVS 1
#define GRIO_DEV_RESVS 2
#define GRIO_PROC_RESVS 3
#define GGD_INFO_KEY 0x53637445
#define GGD_INFO_MAGIC 0x53637445
/*
* this structure defines statisical
* information maintained by the ggd daemon
*/
typedef struct ggd_node_summary {
dev_t node_num; /* device # for node */
int devtype; /* device type */
int max_io_rate; /* rate in kbytes/sec */
int remaining_io_rate; /* rate in kbytes/sec */
int optiosize; /* opt i/o size in bytes */
int num_opt_ios; /* max number of opt i/os */
} ggd_node_summary_t;
typedef struct ggd_info_summary {
int rev_count; /* updated when ggd restarts */
int ggd_info_magic; /* magic number */
int num_nodes; /* num enteries in node_info */
int active_cmd_count; /* num enteries in per_cmd_ */
int max_cmd_count; /* set to GRIO_MAX_COMMANDS */
int per_cmd_count[GRIO_MAX_COMMANDS];
ggd_node_summary_t node_info[1];
} ggd_info_summary_t;
/*
* This file contains the defintions of the structures used to hold
* the bandwidth information for each I/O device supported at SGI.
* It also defines the structures used to build the tree of devices
* currently available on the system.
*/
#define GET_DEVCLASSES() get_devclassptr(defaultoptiosize)
/*
* This is the maximum number of immediate subcategories that any single
* device category may have. There are 3 types of device categories:
* class, type, state
* A single class item cannot have more than NUM_DEV_ITEMS different types
* associated with it. Similarily, a single type item cannot have more
* than NUM_DEV_ITEMS different states associated with it.
*
*/
#define NUM_DEV_ITEMS 25
/*
* IO Adaptor Defines:
* Specific to Everest platform.
* If the number of boards in the INV_IOBD board class reach to
* 19, the IO4_ADAPTOR_TYPE will have to be changed.
* Currently, there is only the CLOVER2 and the EVIO board in the
* INV_IOBD board class.
*/
#define IO4_ADAPTOR_TYPE 19
/*
* Types of IO4 adaptors that currently support guaranteed rate I/O.
*/
#define IO4_ADAP_SCSI_TYPE 0
#define IO4_ADAP_VMECC_TYPE 1
#define IO4_ADAP_EPC_TYPE 2
#define IO4_ADAP_SCIP_TYPE 3
/*
* These next structures are used in the table.c file to construct a
* static table which contains the bandwidth information for each I/O
* device supported at SGI.
*/
/*
* This structure holds the optimal I/O size in bytes and the number of
* requests of optimal I/O size that can be completed by the device in
* one second.
*/
typedef struct dev_info {
int maxioops;
int optiosize;
} dev_info_t;
/*
* This structure contains the state information for a device.
*/
typedef struct dev_state {
int state_id;
dev_info_t dev_info;
} dev_state_t;
/*
* This structure contains the type information for a device and a list
* of all the states associated with that device.
*/
typedef struct dev_type {
dev_state_t dev_state[NUM_DEV_ITEMS];
dev_info_t dev_info;
} dev_type_t;
/*
* This structure contains the class information for a device and a list
* of all the types associated with that device.
*/
typedef struct dev_class {
dev_type_t dev_type[NUM_DEV_ITEMS];
dev_info_t dev_info;
} dev_class_t;
/*
* The length of the string which uniquely identifies a type of disk.
*/
#define DISK_ID_SIZE 28
/*
* This structure contains the device information of a single type of
* disk drive and the identification string for that type of drive.
*/
typedef struct dev_disk {
char disk_id[DISK_ID_SIZE];
dev_info_t dev_info;
} dev_disk_t;
/*
* external declarations for lib_grio
*/
extern int defaultoptiosize;
extern dev_info_t unknown_dev_info;
extern dev_info_t * get_dev_io_limits(int, int, int);
extern int grio_query_device(int, int, int, int);
extern int grio_action_list(int, grio_resv_t *);
extern int grio_associate_file( int, stream_id_t *);
extern int grio_query_fs( dev_t, int *, int *);
/*
* routines for backward compatibility only
*/
extern int grio_unreserve_bw( stream_id_t *);
extern int grio_reserve_file( int, grio_resv_t *);
extern int grio_reserve_fs( dev_t, grio_resv_t *);
#ifdef __cplusplus
}
#endif
#endif /* _GRIO_DOT_H_ */