librtas_src/common.h

Go to the documentation of this file.
00001 
00010 #ifndef _COMMON_H_
00011 #define _COMMON_H_
00012 
00013 #include <stdio.h>
00014 #include <stdint.h>
00015 
00016 #define RC_BUSY -2
00017 #define EXTENDED_DELAY_MIN 9900
00018 #define EXTENDED_DELAY_MAX 9905
00019 
00020 #define PAGE_SIZE 4096
00021 
00022 /* 
00023  * When adding an RTAS call, argument list below should 
00024  * consist of an int token followed by the call arguments 
00025  * defined in librtas.h
00026  */
00027 struct rtas_operations {
00028         int (*activate_firmware)(int token);
00029         int (*cfg_connector)(int token, char *workarea);
00030         int (*delay_timeout)(uint64_t timeout_ms);
00031         int (*display_char)(int token, char c);
00032         int (*display_msg)(int token, char *buf);
00033         int (*errinjct)(int token, int etoken, int otoken, char *workarea);
00034         int (*errinjct_close)(int token, int otoken);
00035         int (*errinjct_open)(int token, int *otoken);
00036         int (*free_rmo_buffer)(void *buf, uint32_t phys_addr, size_t size);
00037         int (*get_dynamic_sensor)(int token, int sensor, void *loc_code,
00038                                 int *state);
00039         int (*get_indices)(int token, int is_sensor, int type, char *workarea, 
00040                                 size_t size, int start, int *next);
00041         int (*get_power_level)(int token, int powerdomain, int *level);
00042         int (*get_rmo_buffer)(size_t size, void **buf, uint32_t *phys_addr);
00043         int (*get_sensor)(int token, int sensor, int index, int *state);
00044         int (*get_sysparm)(int token, unsigned int parameter, 
00045                                 unsigned int length, char *data);
00046         int (*get_time)(int token, uint32_t *year, uint32_t *month, 
00047                                 uint32_t *day, uint32_t *hour, uint32_t *min, 
00048                                 uint32_t *sec, uint32_t *nsec);
00049         int (*get_vpd)(int token, char *loc_code, char *workarea, size_t size, 
00050                                 unsigned int sequence, unsigned int *seq_next,
00051                                 unsigned int *bytes_ret);
00052         int (*lpar_perftools)(int token, int subfunc, char *workarea, 
00053                                 unsigned int length, unsigned int sequence, 
00054                                 unsigned int *seq_next);
00055         int (*platform_dump)(int token, uint64_t dump_tag, uint64_t sequence, 
00056                                 void *buffer, size_t length, 
00057                                 uint64_t *next_seq, uint64_t *bytes_ret);
00058         int (*read_slot_reset)(int token, uint32_t cfg_addr, uint64_t phbid,
00059                                 int *state, int *eeh);
00060         int (*scan_log_dump)(int token, void *buffer, size_t length);
00061         int (*set_dynamic_indicator)(int token, int indicator, int new_value, 
00062                                 void *loc_code);
00063         int (*set_eeh_option)(int token, uint32_t cfg_addr, uint64_t phbid, 
00064                                 int function);
00065         int (*set_indicator)(int token, int indicator, int index, 
00066                                 int new_value);
00067         int (*set_power_level)(int token, int powerdomain, int level, 
00068                                 int *setlevel);
00069         int (*set_poweron_time)(int token, uint32_t year, uint32_t month, 
00070                                 uint32_t day, uint32_t hour, uint32_t min, 
00071                                 uint32_t sec, uint32_t nsec);
00072         int (*set_sysparm)(int token, unsigned int parameter, char *data);
00073         int (*set_time)(int token, uint32_t year, uint32_t month, uint32_t day, 
00074                                 uint32_t hour, uint32_t min, uint32_t sec, 
00075                                 uint32_t nsec);
00076         int (*interface_exists)();
00077 };
00078 
00079 struct librtas_config {
00080         struct rtas_operations *rtas_ops;
00081         uint64_t rtas_timeout_ms;
00082         int debug;
00083 };
00084 
00085 extern int open_proc_rtas_file(const char *name, int mode);
00086 extern int rtas_token(const char *call_name);
00087 extern int read_entire_file(int fd, char **buf, size_t *len);
00088 
00089 extern struct librtas_config config;
00090 
00091 #define RETURN(_rc)             \
00092         if (_rc < 0)            \
00093                 return _rc
00094 
00095 #define CLEANUP(_rc, _label)    \
00096         if (_rc < 0)            \
00097                 goto _label
00098 
00099 #define dbg(_lvl, _fmt, _args...)                                       \
00100         do {                                                            \
00101                 if (config.debug >= _lvl)                               \
00102                         printf("librtas %s(): " _fmt, __FUNCTION__, ##_args); \
00103         } while (0)
00104 
00105 #define dbg1(_fmt, _args...)                                            \
00106         do {                                                            \
00107                 dbg(1, _fmt, ##_args);                                  \
00108         } while (0)                                                     \
00109 
00110 #endif

Generated on Sat Sep 22 08:52:50 2007 for librtas by  doxygen 1.5.3