ZFCP HBA API Library  1
vlib.h
Go to the documentation of this file.
1 /*
2  * Copyright IBM Corp. 2003,2010
3  * All rights reserved. This program and the accompanying materials
4  * are made available under the terms of the Common Public License v1.0
5  * which accompanies this distribution, and is available at
6  * http://www.ibm.com/developerworks/library/os-cpl.html
7  *
8  * Authors: Andreas Herrmann
9  * Stefan Voelkel
10  * Sven Schuetz <sven@de.ibm.com>
11  *
12  * File: vlib.h
13  *
14  * Description:
15  * Contains typedefs, structure definitions, some inline functions and macros
16  * needed in the library.
17  *
18  */
19 
20 #ifndef _VLIB_H_
21 #define _VLIB_H_
22 
126 #include "config.h"
127 
129 #define _GNU_SOURCE
130 
131 #include <execinfo.h>
132 #include <stdlib.h>
133 #include <string.h>
134 #include <stdarg.h>
135 #include <unistd.h>
136 #include <stdio.h>
137 #include <sys/types.h>
138 #include <sys/stat.h>
139 #include <sys/ioctl.h>
140 #include <sys/time.h>
141 #include <fcntl.h>
142 #include <signal.h>
143 #include <errno.h>
144 #include <pthread.h>
145 #include <signal.h>
146 #include <time.h>
147 #include <stdint.h>
148 #include <dirent.h>
149 #include <sys/socket.h>
150 #include <linux/netlink.h>
151 #include <scsi/scsi_netlink_fc.h>
152 #include <dirent.h>
153 
154 #include <hbaapi.h>
155 
156 
157 #ifdef HBAAPI_VENDOR_LIB /* compile as vendor specific library */
158 /*
159  * prototypes for vendor libraries
160  */
161 
162 /* library control */
163 typedef HBA_UINT32(*HBAGetVersionFunc)(void);
164 typedef HBA_STATUS(*HBALoadLibraryFunc)(void);
165 typedef HBA_STATUS(*HBAFreeLibraryFunc)(void);
166 typedef HBA_UINT32(*HBAGetVendorLibraryAttributesFunc)(HBA_LIBRARYATTRIBUTES *);
167 typedef HBA_UINT32(*HBAGetNumberOfAdaptersFunc)(void);
168 typedef void(*HBARefreshInformationFunc)(HBA_HANDLE);
169 typedef void(*HBARefreshAdapterConfigurationFunc)(void);
170 typedef void(*HBAResetStatisticsFunc)(HBA_HANDLE, HBA_UINT32);
171 
172 /* adapter and port information */
173 typedef HBA_STATUS(*HBAGetAdapterNameFunc)(HBA_UINT32, char *);
174 typedef HBA_HANDLE(*HBAOpenAdapterFunc)(char *);
175 typedef HBA_STATUS(*HBAOpenAdapterByWWNFunc)(HBA_HANDLE *, HBA_WWN);
176 typedef void(*HBACloseAdapterFunc)(HBA_HANDLE);
177 typedef HBA_STATUS(*HBAGetAdapterAttributesFunc)
178  (HBA_HANDLE, HBA_ADAPTERATTRIBUTES *);
179 typedef HBA_STATUS(*HBAGetAdapterPortAttributesFunc)
180  (HBA_HANDLE, HBA_UINT32, HBA_PORTATTRIBUTES *);
181 typedef HBA_STATUS(*HBAGetDiscoveredPortAttributesFunc)
182  (HBA_HANDLE, HBA_UINT32, HBA_UINT32, HBA_PORTATTRIBUTES *);
183 typedef HBA_STATUS(*HBAGetPortAttributesByWWNFunc)
184  (HBA_HANDLE, HBA_WWN, HBA_PORTATTRIBUTES *);
185 typedef HBA_STATUS(*HBAGetPortStatisticsFunc)
186  (HBA_HANDLE, HBA_UINT32, HBA_PORTSTATISTICS *);
187 typedef HBA_STATUS(*HBAGetFC4StatisticsFunc)
188  (HBA_HANDLE, HBA_WWN, HBA_UINT8, HBA_FC4STATISTICS *);
189 
190 /* FCP information */
191 typedef HBA_STATUS(*HBAGetBindingCapabilityFunc)
192  (HBA_HANDLE, HBA_WWN, HBA_BIND_CAPABILITY *);
193 typedef HBA_STATUS(*HBAGetBindingSupportFunc)
194  (HBA_HANDLE, HBA_WWN, HBA_BIND_CAPABILITY *);
195 typedef HBA_STATUS(*HBASetBindingSupportFunc)
196  (HBA_HANDLE, HBA_WWN, HBA_BIND_CAPABILITY);
197 typedef HBA_STATUS(*HBAGetFcpTargetMappingFunc)
198  (HBA_HANDLE, HBA_FCPTARGETMAPPING *);
199 typedef HBA_STATUS(*HBAGetFcpTargetMappingV2Func)
200  (HBA_HANDLE, HBA_WWN, HBA_FCPTARGETMAPPINGV2 *);
201 typedef HBA_STATUS(*HBAGetFcpPersistentBindingFunc)
202  (HBA_HANDLE, HBA_FCPBINDING *);
203 typedef HBA_STATUS(*HBAGetPersistentBindingV2Func)
204  (HBA_HANDLE, HBA_WWN, HBA_FCPBINDING2 *);
205 typedef HBA_STATUS(*HBASetPersistentBindingV2Func)
206  (HBA_HANDLE, HBA_WWN, HBA_FCPBINDING2 *);
207 typedef HBA_STATUS(*HBARemovePersistentBindingFunc)
208  (HBA_HANDLE, HBA_WWN, HBA_FCPBINDING2 *);
209 typedef HBA_STATUS(*HBARemoveAllPersistentBindingsFunc)(HBA_HANDLE, HBA_WWN);
210 typedef HBA_STATUS(*HBAGetFCPStatisticsFunc)
211  (HBA_HANDLE, const HBA_SCSIID *, HBA_FC4STATISTICS *);
212 
213 /* SCSI information */
214 typedef HBA_STATUS(*HBASendScsiInquiryFunc)
215  (HBA_HANDLE, HBA_WWN, HBA_UINT64, HBA_UINT8, HBA_UINT32, void *,
216  HBA_UINT32, void *, HBA_UINT32);
217 typedef HBA_STATUS(*HBAScsiInquiryV2Func)
218  (HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT64, HBA_UINT8, HBA_UINT8, void *,
219  HBA_UINT32 *, HBA_UINT8 *, void *, HBA_UINT32 *);
220 typedef HBA_STATUS(*HBASendReportLUNsFunc)
221  (HBA_HANDLE, HBA_WWN, void *, HBA_UINT32, void *, HBA_UINT32);
222 typedef HBA_STATUS(*HBAScsiReportLUNsV2Func)
223  (HBA_HANDLE, HBA_WWN, HBA_WWN, void *, HBA_UINT32 *, HBA_UINT8 *, void *,
224  HBA_UINT32 *);
225 typedef HBA_STATUS(*HBASendReadCapacityFunc)
226  (HBA_HANDLE, HBA_WWN, HBA_UINT64, void *, HBA_UINT32, void *, HBA_UINT32);
227 typedef HBA_STATUS(*HBAScsiReadCapacityV2Func)
228  (HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT64, void *, HBA_UINT32 *,
229  HBA_UINT8 *, void *, HBA_UINT32 *);
230 
231 /* fabric management */
232 typedef HBA_STATUS(*HBASendCTPassThruFunc)
233  (HBA_HANDLE, void *, HBA_UINT32, void *, HBA_UINT32);
234 typedef HBA_STATUS(*HBASendCTPassThruV2Func)
235  (HBA_HANDLE, HBA_WWN, void *, HBA_UINT32, void *, HBA_UINT32 *);
236 typedef HBA_STATUS(*HBASetRNIDMgmtInfoFunc)(HBA_HANDLE, HBA_MGMTINFO *);
237 typedef HBA_STATUS(*HBAGetRNIDMgmtInfoFunc)(HBA_HANDLE, HBA_MGMTINFO *);
238 typedef HBA_STATUS(*HBASendRNIDFunc)
239  (HBA_HANDLE, HBA_WWN, HBA_WWNTYPE, void *, HBA_UINT32 *);
240 typedef HBA_STATUS(*HBASendRNIDV2Func)
241  (HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32, HBA_UINT32, void *,
242  HBA_UINT32 *);
243 typedef HBA_STATUS(*HBASendRPLFunc)
244  (HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32, HBA_UINT32, void *,
245  HBA_UINT32 *);
246 typedef HBA_STATUS(*HBASendRPSFunc)
247  (HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32, HBA_WWN, HBA_UINT32, void *,
248  HBA_UINT32 *);
249 typedef HBA_STATUS(*HBASendSRLFunc)
250  (HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32, void *, HBA_UINT32 *);
251 typedef HBA_STATUS(*HBASendLIRRFunc)
252  (HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT8, HBA_UINT8, void *, HBA_UINT32 *);
253 typedef HBA_STATUS(*HBASendRLSFunc)
254  (HBA_HANDLE, HBA_WWN, HBA_WWN, void *, HBA_UINT32 *);
255 
256 /* event handling */
257 typedef HBA_STATUS(*HBAGetEventBufferFunc)
258  (HBA_HANDLE, HBA_EVENTINFO *, HBA_UINT32 *);
259 typedef HBA_STATUS(*HBARegisterForAdapterAddEventsFunc)
260  (void (*)(void *, HBA_WWN, HBA_UINT32), void *, HBA_CALLBACKHANDLE *);
261 typedef HBA_STATUS(*HBARegisterForAdapterEventsFunc)
262  (void (*)(void *, HBA_WWN, HBA_UINT32), void *, HBA_HANDLE,
263  HBA_CALLBACKHANDLE *);
264 typedef HBA_STATUS(*HBARegisterForAdapterPortEventsFunc)
265  (void (*)(void *, HBA_WWN, HBA_UINT32, HBA_UINT32), void *, HBA_HANDLE,
266  HBA_WWN, HBA_CALLBACKHANDLE *);
267 typedef HBA_STATUS(*HBARegisterForAdapterPortStatEventsFunc)
268  (void (*)(void *, HBA_WWN, HBA_UINT32), void *, HBA_HANDLE, HBA_WWN,
269  HBA_PORTSTATISTICS, HBA_UINT32, HBA_CALLBACKHANDLE *);
270 typedef HBA_STATUS(*HBARegisterForTargetEventsFunc)
271  (void (*)(void *, HBA_WWN, HBA_WWN, HBA_UINT32), void *, HBA_HANDLE,
272  HBA_WWN, HBA_WWN, HBA_CALLBACKHANDLE *, HBA_UINT32);
273 typedef HBA_STATUS(*HBARegisterForLinkEventsFunc)
274  (void (*)(void *, HBA_WWN, HBA_UINT32, void *, HBA_UINT32), void *,
275  void *, HBA_UINT32, HBA_HANDLE, HBA_CALLBACKHANDLE *);
276 typedef HBA_STATUS(*HBARemoveCallbackFunc)(HBA_CALLBACKHANDLE);
277 
278 /* libraries with support for HBA API Phase 1 and 2 must provide both structs,
279  HBA_EntryPoints and HBA_EntryPoints2 */
280 typedef struct HBA_EntryPoints {
281  HBAGetVersionFunc GetVersionHandler;
282  HBALoadLibraryFunc LoadLibraryHandler;
283  HBAFreeLibraryFunc FreeLibraryHandler;
284  HBAGetNumberOfAdaptersFunc GetNumberOfAdaptersHandler;
285  HBAGetAdapterNameFunc GetAdapterNameHandler;
286  HBAOpenAdapterFunc OpenAdapterHandler;
287  HBACloseAdapterFunc CloseAdapterHandler;
288  HBAGetAdapterAttributesFunc GetAdapterAttributesHandler;
289  HBAGetAdapterPortAttributesFunc GetAdapterPortAttributesHandler;
290  HBAGetPortStatisticsFunc GetPortStatisticsHandler;
291  HBAGetDiscoveredPortAttributesFunc
292  GetDiscoveredPortAttributesHandler;
293  HBAGetPortAttributesByWWNFunc GetPortAttributesByWWNHandler;
294  HBASendCTPassThruFunc SendCTPassThruHandler;
295  HBARefreshInformationFunc RefreshInformationHandler;
296  HBAResetStatisticsFunc ResetStatisticsHandler;
297  HBAGetFcpTargetMappingFunc GetFcpTargetMappingHandler;
298  HBAGetFcpPersistentBindingFunc GetFcpPersistentBindingHandler;
299  HBAGetEventBufferFunc GetEventBufferHandler;
300  HBASetRNIDMgmtInfoFunc SetRNIDMgmtInfoHandler;
301  HBAGetRNIDMgmtInfoFunc GetRNIDMgmtInfoHandler;
302  HBASendRNIDFunc SendRNIDHandler;
303  HBASendScsiInquiryFunc ScsiInquiryHandler;
304  HBASendReportLUNsFunc ReportLUNsHandler;
305  HBASendReadCapacityFunc ReadCapacityHandler;
306 } HBA_ENTRYPOINTS;
307 
308 HBA_STATUS HBA_RegisterLibrary(HBA_ENTRYPOINTS *);
309 
310 typedef struct HBA_EntryPointsV2 {
311  HBAGetVersionFunc GetVersionHandler;
312  HBALoadLibraryFunc LoadLibraryHandler;
313  HBAFreeLibraryFunc FreeLibraryHandler;
314  HBAGetNumberOfAdaptersFunc GetNumberOfAdaptersHandler;
315  HBAGetAdapterNameFunc GetAdapterNameHandler;
316  HBAOpenAdapterFunc OpenAdapterHandler;
317  HBACloseAdapterFunc CloseAdapterHandler;
318  HBAGetAdapterAttributesFunc GetAdapterAttributesHandler;
319  HBAGetAdapterPortAttributesFunc GetAdapterPortAttributesHandler;
320  HBAGetPortStatisticsFunc GetPortStatisticsHandler;
321  HBAGetDiscoveredPortAttributesFunc
322  GetDiscoveredPortAttributesHandler;
323  HBAGetPortAttributesByWWNFunc GetPortAttributesByWWNHandler;
324  HBASendCTPassThruFunc SendCTPassThruHandler;
325  HBARefreshInformationFunc RefreshInformationHandler;
326  HBAResetStatisticsFunc ResetStatisticsHandler;
327  HBAGetFcpTargetMappingFunc GetFcpTargetMappingHandler;
328  HBAGetFcpPersistentBindingFunc GetFcpPersistentBindingHandler;
329  HBAGetEventBufferFunc GetEventBufferHandler;
330  HBASetRNIDMgmtInfoFunc SetRNIDMgmtInfoHandler;
331  HBAGetRNIDMgmtInfoFunc GetRNIDMgmtInfoHandler;
332  HBASendRNIDFunc SendRNIDHandler;
333  HBASendScsiInquiryFunc ScsiInquiryHandler;
334  HBASendReportLUNsFunc ReportLUNsHandler;
335  HBASendReadCapacityFunc ReadCapacityHandler;
336  HBAOpenAdapterByWWNFunc OpenAdapterByWWNHandler;
337  HBAGetFcpTargetMappingV2Func GetFcpTargetMappingV2Handler;
338  HBASendCTPassThruV2Func SendCTPassThruV2Handler;
339  HBARefreshAdapterConfigurationFunc RefreshAdapterConfigurationHandler;
340  HBAGetBindingCapabilityFunc GetBindingCapabilityHandler;
341  HBAGetBindingSupportFunc GetBindingSupportHandler;
342  HBASetBindingSupportFunc SetBindingSupportHandler;
343  HBASetPersistentBindingV2Func SetPersistentBindingV2Handler;
344  HBAGetPersistentBindingV2Func GetPersistentBindingV2Handler;
345  HBARemovePersistentBindingFunc RemovePersistentBindingHandler;
346  HBARemoveAllPersistentBindingsFunc
347  RemoveAllPersistentBindingsHandler;
348  HBASendRNIDV2Func SendRNIDV2Handler;
349  HBAScsiInquiryV2Func ScsiInquiryV2Handler;
350  HBAScsiReportLUNsV2Func ScsiReportLUNsV2Handler;
351  HBAScsiReadCapacityV2Func ScsiReadCapacityV2Handler;
352  HBAGetVendorLibraryAttributesFunc
353  GetVendorLibraryAttributesHandler;
354  HBARemoveCallbackFunc RemoveCallbackHandler;
355  HBARegisterForAdapterAddEventsFunc
356  RegisterForAdapterAddEventsHandler;
357  HBARegisterForAdapterEventsFunc RegisterForAdapterEventsHandler;
358  HBARegisterForAdapterPortEventsFunc
359  RegisterForAdapterPortEventsHandler;
360  HBARegisterForAdapterPortStatEventsFunc
361  RegisterForAdapterPortStatEventsHandler;
362  HBARegisterForTargetEventsFunc RegisterForTargetEventsHandler;
363  HBARegisterForLinkEventsFunc RegisterForLinkEventsHandler;
364  HBASendRPLFunc SendRPLHandler;
365  HBASendRPSFunc SendRPSHandler;
366  HBASendSRLFunc SendSRLHandler;
367  HBASendLIRRFunc SendLIRRHandler;
368  HBAGetFC4StatisticsFunc GetFC4StatisticsHandler;
369  HBAGetFCPStatisticsFunc GetFCPStatisticsHandler;
370  HBASendRLSFunc SendRLSHandler;
371 } HBA_ENTRYPOINTSV2;
372 
373 HBA_STATUS HBA_RegisterLibraryV2(HBA_ENTRYPOINTSV2 *);
374 
375 #endif /* HBAAPI_VENDOR_LIB */
376 
378 #define HBAAPI_LIBRARY_VERSION 2
379 
382 #define HBAAPI_LIBRARY_FINAL 0
383 
385 #define HBAAPI_LIBRARY_REVISION VERSION
386 
388 #define VLIB_ENV_LOG_LEVEL "LIB_ZFCP_HBAAPI_LOG_LEVEL"
389 
391 #define VLIB_ENV_LOG_FILE "LIB_ZFCP_HBAAPI_LOG_FILE"
392 
394 #define VLIB_ADAPTERNAME_PREFIX "com.ibm-FICON-FCP-"
395 
397 #define VLIB_ADAPTERNAME_LEN 256
398 
400 #define VLIB_INVALID_HANDLE 0
401 
403 #define REPORTLUNS_WLUN 0xc101000000000000
404 #define REPORTLUNS_WLUN_DEC 49409
405 
406 typedef uint64_t devid_t;
407 typedef uint64_t wwn_t;
408 typedef uint32_t fc_id_t;
409 typedef uint64_t fcp_lun_t;
410 
412 struct vlib_event {
413  HBA_EVENTINFO hbaapi_event;
414  struct vlib_event *next;
415 };
416 
419  unsigned int slots_used;
420  struct vlib_event *first;
421  struct vlib_event *last;
422 };
423 
425 struct block {
426  void *data;
427  size_t used;
428  size_t allocated;
429 };
430 
432 struct vlib_unit {
433  unsigned int isInvalid:1;
434  unsigned int host;
435  unsigned int channel;
436  unsigned int target;
437  unsigned int lun;
438  uint64_t fcLun;
439  char sg_dev[16];
440 };
441 
443 struct vlib_port {
444  unsigned int isInvalid:1;
445  wwn_t wwpn;
446  wwn_t wwnn;
447  fc_id_t did;
448  struct block units;
449  char name[32];
451  unsigned int host;
452  unsigned int channel;
453  unsigned int target;
454 };
455 
458  devid_t devid;
459  wwn_t wwnn;
460  wwn_t wwpn;
461  unsigned short host;
462  fc_id_t did;
463  char bus_dev_name[9];
466  char class_dev_name[9];
469  char sysfsPath[PATH_MAX];
471 };
472 
474 struct vlib_adapter {
475  unsigned int isInvalid:1;
477  HBA_HANDLE handle;
478  struct block ports;
481 };
482 
484 struct vlib_data {
485  unsigned int isLoaded:1;
486  unsigned int unloading:1;
487  unsigned int isValid:1;
490  int loglevel;
492  FILE *errfp;
494  struct block adapters;
497  pthread_t id;
499  pthread_mutex_t mutex;
500 };
501 
511 extern struct vlib_data vlib_data;
512 
514 static inline void vlib_print_error(int errnum, const char *function,
515  const char *file, int line,
516  char *fmt, ...)
517 {
518  char buffer[256];
519  va_list ap;
520 
521  if (0 == vlib_data.loglevel)
522  return;
523 
524  fprintf(vlib_data.errfp, "(%s:%d)%s: ", file, line, function);
525 
526  va_start(ap, fmt);
527  vfprintf(vlib_data.errfp, fmt, ap);
528  va_end(ap);
529 
530  if (errnum != 0) {
531  fprintf(vlib_data.errfp, ": %s\n",
532  strerror_r(errnum, buffer, 256));
533  }
534 }
535 
538 #define VLIB_PERROR(errnum, fmt, args...) \
539 vlib_print_error(errnum, __func__, __FILE__, __LINE__, fmt, ##args)
540 
542 #define VLIB_LOG(fmt, args...) \
543 vlib_print_error(0, __func__, __FILE__, __LINE__, fmt, ##args)
544 
550 #ifdef HBAAPI_BACKTRACE
551 #define BT_SIZE 50
552 static inline void vlib_bt(void)
553 {
554  int num;
555  void *array[BT_SIZE] = { 0 };
556 
557  num = backtrace(array, BT_SIZE);
558  backtrace_symbols_fd(array, num, fileno(stderr));
559 }
560 #else
561 #define vlib_bt()
562 #endif
563 
571 #define VLIB_MUTEX_LOCK(mutex) \
572 do { \
573  int __ret; \
574  __ret = pthread_mutex_lock(mutex); \
575  if (__ret == EDEADLK) { \
576  VLIB_LOG("BUG: VLIB_MUTEX_LOCK: deadlock detected!\n"); \
577  vlib_bt(); \
578  exit(1); \
579  } else if (__ret == EINVAL) { \
580  VLIB_LOG("BUG: VLIB_MUTEX_LOCK: mutex not properly " \
581  "initialized\n"); \
582  vlib_bt(); \
583  exit(1); \
584  } \
585 } while (0)
586 
594 #define VLIB_MUTEX_UNLOCK(mutex) \
595 do { \
596  int __ret; \
597  __ret = pthread_mutex_unlock(mutex); \
598  if (__ret == EPERM) { \
599  VLIB_LOG("BUG: VLIB_MUTEX_UNLOCK: thread does not own " \
600  "mutex!\n"); \
601  vlib_bt(); \
602  exit(1); \
603  } else if (__ret == EINVAL) { \
604  VLIB_LOG("BUG: VLIB_MUTEX_UNLOCK: " \
605  "mutex not properly initialized\n"); \
606  vlib_bt(); \
607  exit(1); \
608  } \
609 } while (0)
610 
611 /* Include auxiliary stuff, like inline and helper functions etc. */
612 #include "vlib_aux.h"
613 #include "vlib_sysfs.h"
614 #include "vlib_sg.h"
615 #include "vlib_sg_io.h"
616 #include "vlib_events.h"
617 #include "vlib_sfhelper.h"
618 
619 #endif /* _VLIB_H_ */
vlib.h
Central header file for the library.
vlib_unit::lun
unsigned int lun
SCSI LUN.
Definition: vlib.h:437
vlib_port::wwnn
wwn_t wwnn
WWNN of the port.
Definition: vlib.h:446
vlib_adapter::ident
struct vlib_adapter_ident ident
Adapter identification.
Definition: vlib.h:476
sysfs_getDiscoveredPortAttributes
HBA_STATUS sysfs_getDiscoveredPortAttributes(HBA_PORTATTRIBUTES **pAttrs, struct vlib_port *port)
Retrieve adapter attributes.
Definition: vlib_sysfs.c:408
vlib_data::isLoaded
unsigned int isLoaded
Library loaded or not.
Definition: vlib.h:485
doCloseAdapter
void doCloseAdapter(struct vlib_adapter *adapter)
Close an adapter in the repository.
Definition: vlib_aux.c:644
revalidateRepository
static HBA_STATUS revalidateRepository(void)
Check status of the repository, and possibly revalidate it.
Definition: vlib_sysfs.h:57
vlib_adapter_ident::wwnn
wwn_t wwnn
WWN of adapter node.
Definition: vlib.h:459
vlib_adapter_ident::sysfsPath
char sysfsPath[PATH_MAX]
path of adapter in sysfs in the form /sys/devices/css0/0.0.0010/0.0.5923
Definition: vlib.h:469
HBA_SendSRL
HBA_STATUS HBA_SendSRL(HBA_HANDLE handle, HBA_WWN hbaPortWWN, HBA_WWN wwn, HBA_UINT32 domain, void *pRspBuffer, HBA_UINT32 *pRspBufferSize)
Definition: vlib.c:1776
HBA_GetDiscoveredPortAttributes
HBA_STATUS HBA_GetDiscoveredPortAttributes(HBA_HANDLE handle, HBA_UINT32 portindex, HBA_UINT32 discoveredportindex, HBA_PORTATTRIBUTES *pPortattributes)
Return attributes of an discovered port.
Definition: vlib.c:742
HBA_RefreshInformation
void HBA_RefreshInformation(HBA_HANDLE handle)
Refresh information of an adapter.
Definition: vlib.c:420
sysfs_createAndReadConfigAdapter
HBA_STATUS sysfs_createAndReadConfigAdapter()
Read all adapters from /sys/bus/ccw/drivers/zfcp and add them to the repository.
Definition: vlib_sysfs.c:260
vlib_adapter::event_queue
struct vlib_event_queue event_queue
Event queue.
Definition: vlib.h:479
HBA_GetVendorLibraryAttributes
HBA_UINT32 HBA_GetVendorLibraryAttributes(HBA_UINT32 adapter_index, HBA_LIBRARYATTRIBUTES *attributes)
Return attributes of the vendor specific HBA API library.
Definition: vlib.c:362
vlib_data::errfp
FILE * errfp
file used for logging Default is stderr.
Definition: vlib.h:492
HBA_GetBindingSupport
HBA_STATUS HBA_GetBindingSupport(HBA_HANDLE handle, HBA_WWN hbaPortWWN, HBA_BIND_CAPABILITY *pFlags)
Definition: vlib.c:880
HBA_SendLIRR
HBA_STATUS HBA_SendLIRR(HBA_HANDLE handle, HBA_WWN hbaPortWWN, HBA_WWN destWWN, HBA_UINT8 function, HBA_UINT8 type, void *pRspBuffer, HBA_UINT32 *pRspBufferSize)
Definition: vlib.c:1787
vlib_port::host
unsigned int host
SCSI host.
Definition: vlib.h:451
vlib_port
Representation of a FC port in the library.
Definition: vlib.h:443
getAttachedWLUN
char * getAttachedWLUN(struct vlib_adapter *adapter, struct vlib_port *port)
Try to attach the report luns wlun and return its name as in "/dev".
Definition: vlib_aux.c:925
vlib_adapter::handle
HBA_HANDLE handle
Handle for this adapter.
Definition: vlib.h:477
vlib_adapter_ident::devid
devid_t devid
Unique id for adapter device.
Definition: vlib.h:458
vlib_wwn_to_HBA_WWN
static void vlib_wwn_to_HBA_WWN(uint64_t wwn, HBA_WWN *hba)
Convert uint64_t to HBA_WWN – hide ill-favoured type cast.
Definition: vlib_aux.h:81
HBA_FreeLibrary
HBA_STATUS HBA_FreeLibrary(void)
Free system resources that library has used.
Definition: vlib.c:170
_HBA_SendScsiInquiry
static HBA_STATUS _HBA_SendScsiInquiry(HBA_HANDLE handle, HBA_WWN PortWWN, HBA_UINT64 fcLUN, HBA_UINT8 EVPD, HBA_UINT32 PageCode, void *pRspBuffer, HBA_UINT32 *RspBufferSize, void *pSenseBuffer, HBA_UINT32 *SenseBufferSize)
Definition: vlib.c:1146
vlib_unit
Represenation of an FCP unit in the library.
Definition: vlib.h:432
sysfs_getAdapterPortAttributes
HBA_STATUS sysfs_getAdapterPortAttributes(HBA_PORTATTRIBUTES **pAttrs, struct vlib_adapter *adapter)
Retrieve adapter attributes.
Definition: vlib_sysfs.c:443
HBA_GetRNIDMgmtInfo
HBA_STATUS HBA_GetRNIDMgmtInfo(HBA_HANDLE handle, HBA_MGMTINFO *pInfo)
Definition: vlib.c:1629
vlib_port::wwpn
wwn_t wwpn
WWPN of the port.
Definition: vlib.h:445
vlib_adapter_ident::bus_dev_name
char bus_dev_name[9]
name of device as in /sys/bus/ccw/drivers/zfcp in the form "x.x.xxxx"
Definition: vlib.h:463
vlib_adapter_ident::wwpn
wwn_t wwpn
WWN of adapter port.
Definition: vlib.h:460
vlib_port::name
char name[32]
name as in sysfs under fc_remote_ports
Definition: vlib.h:449
HBA_CloseAdapter
void HBA_CloseAdapter(HBA_HANDLE handle)
Close an open adapter.
Definition: vlib.c:592
getAdapterByIndex
struct vlib_adapter * getAdapterByIndex(uint32_t index)
Get an adapter by its index.
Definition: vlib_aux.c:118
HBA_GetAdapterName
HBA_STATUS HBA_GetAdapterName(HBA_UINT32 adapterindex, char *pAdaptername)
Return name that identifies an adapter.
Definition: vlib.c:501
HBA_GetFcpPersistentBinding
HBA_STATUS HBA_GetFcpPersistentBinding(HBA_HANDLE handle, HBA_FCPBINDING *pBinding)
Definition: vlib.c:1080
HBA_GetPortStatistics
HBA_STATUS HBA_GetPortStatistics(HBA_HANDLE handle, HBA_UINT32 portindex, HBA_PORTSTATISTICS *pPortstatistics)
Return statistics of an adapter port.
Definition: vlib.c:816
HBA_GetVersion
HBA_UINT32 HBA_GetVersion(void)
Return the version of the HBA API specification with which this library is compliant.
Definition: vlib.c:60
HBA_SetRNIDMgmtInfo
HBA_STATUS HBA_SetRNIDMgmtInfo(HBA_HANDLE handle, HBA_MGMTINFO *info)
Definition: vlib.c:1620
HBA_RegisterForAdapterAddEvents
HBA_STATUS HBA_RegisterForAdapterAddEvents(void(*)(void *, HBA_WWN, HBA_UINT32), void *, HBA_CALLBACKHANDLE *)
Definition: vlib_callbacks.c:45
hbaapi.h
C header file descriping the HBA API.
getUnitByFcLun
struct vlib_unit * getUnitByFcLun(const struct vlib_port *port, uint64_t fcLun)
Get an unit by its fclun.
Definition: vlib_aux.c:295
HBAAPI_LIBRARY_REVISION
#define HBAAPI_LIBRARY_REVISION
Revision of this library.
Definition: vlib.h:385
vlib_adapter_ident::host
unsigned short host
SCSI host id of this adapter.
Definition: vlib.h:461
block::used
size_t used
number of used elements in the array
Definition: vlib.h:427
HBA_RegisterForTargetEvents
HBA_STATUS HBA_RegisterForTargetEvents(void(*)(void *, HBA_WWN, HBA_WWN, HBA_UINT32), void *, HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_CALLBACKHANDLE *, HBA_UINT32)
Definition: vlib_callbacks.c:98
HBA_GetEventBuffer
HBA_STATUS HBA_GetEventBuffer(HBA_HANDLE handle, HBA_EVENTINFO *pEventBuffer, HBA_UINT32 *pEventCount)
Return events for an adapter from the event queue.
Definition: vlib.c:1818
HBA_SetBindingSupport
HBA_STATUS HBA_SetBindingSupport(HBA_HANDLE handle, HBA_WWN hbaPortWWN, HBA_BIND_CAPABILITY flags)
Definition: vlib.c:890
vlib_bt
#define vlib_bt()
Print a stack backtrace.
Definition: vlib.h:561
VLIB_LOG
#define VLIB_LOG(fmt, args...)
To log messages in the library, this macro is used.
Definition: vlib.h:542
HBA_GetNumberOfAdapters
HBA_UINT32 HBA_GetNumberOfAdapters(void)
Return number of adapters.
Definition: vlib.c:398
findIndexByName
int findIndexByName(char *name)
Find an adapter index by name.
Definition: vlib_aux.c:582
_initvlib
void _initvlib(void)
Initialization function of this library.
Definition: vlib.c:69
vlib_data::id
pthread_t id
Pthread ID of event handling thread.
Definition: vlib.h:497
vlib_data::loglevel
int loglevel
loglevel for library Default is 0 – no logging.
Definition: vlib.h:490
HBA_RemoveCallback
HBA_STATUS HBA_RemoveCallback(HBA_CALLBACKHANDLE)
Definition: vlib_callbacks.c:35
detachWLUN
void detachWLUN(struct vlib_adapter *adapter, struct vlib_port *port)
Try to detach lun 0.
Definition: vlib_aux.c:955
getAdapterByHandle
struct vlib_adapter * getAdapterByHandle(HBA_HANDLE handle, HBA_STATUS *status)
Get an adapter by its handle.
Definition: vlib_aux.c:143
HBA_OpenAdapter
HBA_HANDLE HBA_OpenAdapter(char *pAdaptername)
Open an adapter.
Definition: vlib.c:546
HBA_RegisterForAdapterEvents
HBA_STATUS HBA_RegisterForAdapterEvents(void(*)(void *, HBA_WWN, HBA_UINT32), void *, HBA_HANDLE, HBA_CALLBACKHANDLE *)
Definition: vlib_callbacks.c:57
vlib_adapter::isInvalid
unsigned int isInvalid
Adapter invalid or not.
Definition: vlib.h:475
vlib_data::isValid
unsigned int isValid
Repositoy valid or not This flag is set for instance if a loss of events is detected.
Definition: vlib.h:487
HBA_RegisterForAdapterPortEvents
HBA_STATUS HBA_RegisterForAdapterPortEvents(void(*)(void *, HBA_WWN, HBA_UINT32, HBA_UINT32), void *, HBA_HANDLE, HBA_WWN, HBA_CALLBACKHANDLE *)
Definition: vlib_callbacks.c:69
HBA_ScsiInquiryV2
HBA_STATUS HBA_ScsiInquiryV2(HBA_HANDLE handle, HBA_WWN hbaPortWWN, HBA_WWN discoveredPortWWN, HBA_UINT64 fcLUN, HBA_UINT8 CDB_Byte1, HBA_UINT8 CDB_Byte2, void *pRspBuffer, HBA_UINT32 *pRspBufferSize, HBA_UINT8 *pScsiStatus, void *pSenseBuffer, HBA_UINT32 *pSenseBufferSize)
Send a SCSI INQUIRY command to a FCP LUN.
Definition: vlib.c:1271
revalidatePorts
static int revalidatePorts(struct vlib_adapter *adapter)
Revalidate ports of an adapter in the repository.
Definition: vlib_sysfs.h:82
HBA_GetFCPStatistics
HBA_STATUS HBA_GetFCPStatistics(HBA_HANDLE handle, const HBA_SCSIID *lunit, HBA_FC4STATISTICS *statistics)
Definition: vlib.c:1130
vlib_unit::isInvalid
unsigned int isInvalid
Unit invalid or not.
Definition: vlib.h:433
vlib_data::adapters
struct block adapters
List of adapters In fact this is the anchor of the library's repository.
Definition: vlib.h:494
HBA_SendCTPassThru
HBA_STATUS HBA_SendCTPassThru(HBA_HANDLE handle, void *pReqBuffer, HBA_UINT32 ReqBufferSize, void *pRspBuffer, HBA_UINT32 RspBufferSize)
Send a CT pass thru - a CT frame constructed in userspace directly to the HBA / SAN.
Definition: vlib.c:1563
vlib_adapter_ident::did
fc_id_t did
FC did of the port.
Definition: vlib.h:462
VLIB_MUTEX_LOCK
#define VLIB_MUTEX_LOCK(mutex)
To lock a mutex, this macro is used, which checks for errors.
Definition: vlib.h:571
getPortByIndex
struct vlib_port * getPortByIndex(const struct vlib_adapter *adapter, const uint32_t index)
Get a port by its index.
Definition: vlib_aux.c:230
vlib_data
Primary data structure used in the library.
Definition: vlib.h:484
_finivlib
void _finivlib(void)
Finalization function of this library.
Definition: vlib.c:114
vlib_port::target
unsigned int target
SCSI id.
Definition: vlib.h:453
VLIB_ENV_LOG_FILE
#define VLIB_ENV_LOG_FILE
Environment variable specifying the file which is used for logging.
Definition: vlib.h:391
vlib_adapter
Represenation of an adapter in the library.
Definition: vlib.h:474
vlib_data::mutex
pthread_mutex_t mutex
Protects this structure.
Definition: vlib.h:499
_GetVendorLibraryAttributes
static HBA_UINT32 _GetVendorLibraryAttributes(HBA_LIBRARYATTRIBUTES *)
Internal function to report the attributes of the libary.
Definition: vlib.c:374
HBA_SendRNID
HBA_STATUS HBA_SendRNID(HBA_HANDLE handle, HBA_WWN wwn, HBA_WWNTYPE wwntype, void *pRspBuffer, HBA_UINT32 *pRspBufferSize)
Send a RNID ELS to a port.
Definition: vlib.c:1678
revalidateUnits
static int revalidateUnits(struct vlib_port *port)
Revalidate units of an adapter and port in the repository.
Definition: vlib_sysfs.h:103
HBA_OpenAdapterByWWN
HBA_STATUS HBA_OpenAdapterByWWN(HBA_HANDLE *pHandle, HBA_WWN wwn)
Definition: vlib.c:577
HBA_ScsiReportLUNsV2
HBA_STATUS HBA_ScsiReportLUNsV2(HBA_HANDLE handle, HBA_WWN hbaPortWWN, HBA_WWN discoveredPortWWN, void *pRspBuffer, HBA_UINT32 *pRspBufferSize, HBA_UINT8 *pScsiStatus, void *pSenseBuffer, HBA_UINT32 *pSenseBufferSize)
Send a SCSI REPORT LUNS command to a target.
Definition: vlib.c:1394
HBA_RemoveAllPersistentBindings
HBA_STATUS HBA_RemoveAllPersistentBindings(HBA_HANDLE handle, HBA_WWN hbaPortWWN)
Definition: vlib.c:1120
vlib_unit::fcLun
uint64_t fcLun
FCP LUN.
Definition: vlib.h:438
vlib_unit::host
unsigned int host
SCSI host.
Definition: vlib.h:434
HBA_ResetStatistics
void HBA_ResetStatistics(HBA_HANDLE handle, HBA_UINT32 portindex)
According to FC-HBA this function is obsolete.
Definition: vlib.c:477
HBA_LoadLibrary
HBA_STATUS HBA_LoadLibrary(void)
Perform initialization of library.
Definition: vlib.c:133
vlib_port::did
fc_id_t did
FC did of the port.
Definition: vlib.h:447
HBA_GetFC4Statistics
HBA_STATUS HBA_GetFC4Statistics(HBA_HANDLE handle, HBA_WWN hbaPortWWN, HBA_UINT8 FC4type, HBA_FC4STATISTICS *statistics)
Definition: vlib.c:853
HBAAPI_LIBRARY_FINAL
#define HBAAPI_LIBRARY_FINAL
Define as 1 if this library implements the final FC-HBA, which is not yet the case.
Definition: vlib.h:382
HBA_SendRLS
HBA_STATUS HBA_SendRLS(HBA_HANDLE handle, HBA_WWN hbaPortWWN, HBA_WWN destWWN, void *pRspBuffer, HBA_UINT32 *pRspBufferSize)
Definition: vlib.c:1798
vlib_adapter_ident
Identification of an adapter in the library.
Definition: vlib.h:457
HBA_SetPersistentBindingV2
HBA_STATUS HBA_SetPersistentBindingV2(HBA_HANDLE handle, HBA_WWN hbaPortWWN, HBA_FCPBINDING2 *binding)
Definition: vlib.c:1100
vlib_aux.h
Auxiliary functions used in the library.
_HBA_SendReportLUNs
static HBA_STATUS _HBA_SendReportLUNs(HBA_HANDLE handle, HBA_WWN portWWN, void *pRspBuffer, HBA_UINT32 *RspBufferSize, void *pSenseBuffer, HBA_UINT32 *SenseBufferSize)
Definition: vlib.c:1291
HBA_GetPortAttributesByWWN
HBA_STATUS HBA_GetPortAttributesByWWN(HBA_HANDLE handle, HBA_WWN PortWWN, HBA_PORTATTRIBUTES *pPortattributes)
Definition: vlib.c:793
vlib_unit::channel
unsigned int channel
SCSI channel.
Definition: vlib.h:435
HBA_SendCTPassThruV2
HBA_STATUS HBA_SendCTPassThruV2(HBA_HANDLE handle, HBA_WWN hbaPortWWN, void *pReqBuffer, HBA_UINT32 ReqBufferSize, void *pRspBuffer, HBA_UINT32 *pRspBufferSize)
Send a CT pass thru - a CT frame constructed in userspace directly to the HBA / SAN.
Definition: vlib.c:1608
HBA_GetFcpTargetMapping
HBA_STATUS HBA_GetFcpTargetMapping(HBA_HANDLE handle, HBA_FCPTARGETMAPPING *pMapping)
Retrieve mappings between OS SCSI targets/units and FCP targets/units.
Definition: vlib.c:914
_HBA_SendReadCapacity
static HBA_STATUS _HBA_SendReadCapacity(HBA_HANDLE handle, HBA_WWN portWWN, HBA_UINT64 fcLUN, void *pRspBuffer, HBA_UINT32 *RspBufferSize, void *pSenseBuffer, HBA_UINT32 *SenseBufferSize)
Definition: vlib.c:1410
VLIB_MUTEX_UNLOCK
#define VLIB_MUTEX_UNLOCK(mutex)
To unlock a mutex, this macro is used, which checks for errors.
Definition: vlib.h:594
block
Block structure used to hold all needed data for growable arrays.
Definition: vlib.h:425
updateAdapter
int updateAdapter(struct vlib_adapter *adapter)
Update information about ports and units of an adapter.
Definition: vlib_aux.c:512
HBA_GetWrapperLibraryAttributes
HBA_UINT32 HBA_GetWrapperLibraryAttributes(HBA_LIBRARYATTRIBUTES *attributes)
Return attributes of the OS specific HBA API library.
Definition: vlib.c:345
vlib_unit::sg_dev
char sg_dev[16]
name of sg device
Definition: vlib.h:439
vlib_HBA_WWN_to_wwn
static void vlib_HBA_WWN_to_wwn(HBA_WWN *hba, uint64_t *wwn)
Convert HBA_WWN to uint64_t – hide ill-favoured type cast.
Definition: vlib_aux.h:91
HBA_RemovePersistentBinding
HBA_STATUS HBA_RemovePersistentBinding(HBA_HANDLE handle, HBA_WWN hbaPortWWN, HBA_FCPBINDING2 *binding)
Definition: vlib.c:1110
vlib_data::unloading
unsigned int unloading
Library unloaded.
Definition: vlib.h:486
openAdapterByIndex
HBA_HANDLE openAdapterByIndex(HBA_UINT32 index)
Open an adapter by index.
Definition: vlib_aux.c:614
HBAAPI_LIBRARY_VERSION
#define HBAAPI_LIBRARY_VERSION
This is a phase 2 HBA API library.
Definition: vlib.h:378
HBA_GetFcpTargetMappingV2
HBA_STATUS HBA_GetFcpTargetMappingV2(HBA_HANDLE handle, HBA_WWN hbaPortWWN, HBA_FCPTARGETMAPPINGV2 *pMappingV2)
Retrieve mappings between OS SCSI targets/units and FCP targets/units.
Definition: vlib.c:1029
vlib_port::isInvalid
unsigned int isInvalid
Port invalid or not.
Definition: vlib.h:444
HBA_SendScsiInquiry
HBA_STATUS HBA_SendScsiInquiry(HBA_HANDLE handle, HBA_WWN PortWWN, HBA_UINT64 fcLUN, HBA_UINT8 EVPD, HBA_UINT32 PageCode, void *pRspBuffer, HBA_UINT32 RspBufferSize, void *pSenseBuffer, HBA_UINT32 SenseBufferSize)
Send a SCSI INQUIRY command to a FCP LUN.
Definition: vlib.c:1231
HBA_SendRPS
HBA_STATUS HBA_SendRPS(HBA_HANDLE handle, HBA_WWN hbaPortWWN, HBA_WWN agent_wwn, HBA_UINT32 agent_domain, HBA_WWN object_wwn, HBA_UINT32 object_port_number, void *pRspBuffer, HBA_UINT32 *pRspBufferSize)
Definition: vlib.c:1764
HBA_GetPersistentBindingV2
HBA_STATUS HBA_GetPersistentBindingV2(HBA_HANDLE handle, HBA_WWN hbaPortWWN, HBA_FCPBINDING2 *binding)
Definition: vlib.c:1090
vlib_print_error
static void vlib_print_error(int errnum, const char *function, const char *file, int line, char *fmt,...)
This is a wrapper for the usage of strerror_r().
Definition: vlib.h:514
vlib_adapter_ident::class_dev_name
char class_dev_name[9]
name of device as in /sys/class/fc_host in the form "hostxxxx"
Definition: vlib.h:466
vlib_sysfs.h
All calls that need the sysfs.
getSgDevFromPort
char * getSgDevFromPort(struct vlib_port *port)
Get the first sg device from an adapter.
Definition: vlib_aux.c:901
block::data
void * data
pointer to an array
Definition: vlib.h:426
HBA_RegisterForAdapterPortStatEvents
HBA_STATUS HBA_RegisterForAdapterPortStatEvents(void(*)(void *, HBA_WWN, HBA_UINT32), void *, HBA_HANDLE, HBA_WWN, HBA_PORTSTATISTICS, HBA_UINT32, HBA_CALLBACKHANDLE *)
Definition: vlib_callbacks.c:83
config.h
Configuration header file after configure script was run.
HBA_SendReportLUNs
HBA_STATUS HBA_SendReportLUNs(HBA_HANDLE handle, HBA_WWN portWWN, void *pRspBuffer, HBA_UINT32 RspBufferSize, void *pSenseBuffer, HBA_UINT32 SenseBufferSize)
Send a SCSI REPORT LUNS command to a target.
Definition: vlib.c:1361
vlib_port::units
struct block units
List of units.
Definition: vlib.h:448
VLIB_ADAPTERNAME_LEN
#define VLIB_ADAPTERNAME_LEN
Maximal lenght of an adapter name as used in this libary.
Definition: vlib.h:397
sysfs_getAdapterAttributes
HBA_STATUS sysfs_getAdapterAttributes(HBA_ADAPTERATTRIBUTES **pAttrs, struct vlib_adapter *adapter)
Retrieve adapter attributes.
Definition: vlib_sysfs.c:495
HBA_ScsiReadCapacityV2
HBA_STATUS HBA_ScsiReadCapacityV2(HBA_HANDLE handle, HBA_WWN hbaPortWWN, HBA_WWN discoveredPortWWN, HBA_UINT64 fcLUN, void *pRspBuffer, HBA_UINT32 *pRspBufferSize, HBA_UINT8 *pScsiStatus, void *pSenseBuffer, HBA_UINT32 *pSenseBufferSize)
Send a SCSI READ CAPACITY command to a FCP LUN.
Definition: vlib.c:1528
getUnitByIndex
struct vlib_unit * getUnitByIndex(const struct vlib_port *port, const uint32_t index)
Get an unit by its index.
Definition: vlib_aux.c:276
VLIB_PERROR
#define VLIB_PERROR(errnum, fmt, args...)
To log errors in the library, this macro is used which invokes vlib_print_error().
Definition: vlib.h:538
HBA_SendReadCapacity
HBA_STATUS HBA_SendReadCapacity(HBA_HANDLE handle, HBA_WWN portWWN, HBA_UINT64 fcLUN, void *pRspBuffer, HBA_UINT32 RspBufferSize, void *pSenseBuffer, HBA_UINT32 SenseBufferSize)
Send a SCSI READ CAPACITY command to a FCP LUN.
Definition: vlib.c:1492
HBA_GetBindingCapability
HBA_STATUS HBA_GetBindingCapability(HBA_HANDLE handle, HBA_WWN hbaPortWWN, HBA_BIND_CAPABILITY *pFlags)
Definition: vlib.c:870
HBA_SendRPL
HBA_STATUS HBA_SendRPL(HBA_HANDLE handle, HBA_WWN hbaPortWWN, HBA_WWN agent_wwn, HBA_UINT32 agent_domain, HBA_UINT32 portIndex, void *pRspBuffer, HBA_UINT32 *pRspBufferSize)
Definition: vlib.c:1753
vlib_event
Event data structure used in the library.
Definition: vlib.h:412
HBA_RefreshAdapterConfiguration
void HBA_RefreshAdapterConfiguration(void)
Refresh information about configured adapters.
Definition: vlib.c:461
sysfs_getPortStatistics
HBA_STATUS sysfs_getPortStatistics(HBA_PORTSTATISTICS **pS, struct vlib_adapter *adapter)
Retrieve adapter port statistics.
Definition: vlib_sysfs.c:595
HBA_GetAdapterAttributes
HBA_STATUS HBA_GetAdapterAttributes(HBA_HANDLE handle, HBA_ADAPTERATTRIBUTES *pAdapterattributes)
Return attributes for an adapter.
Definition: vlib.c:627
HBA_RegisterForLinkEvents
HBA_STATUS HBA_RegisterForLinkEvents(void(*)(void *, HBA_WWN, HBA_UINT32, void *, HBA_UINT32), void *, void *, HBA_UINT32, HBA_HANDLE, HBA_CALLBACKHANDLE *)
Definition: vlib_callbacks.c:113
closeAllAdapters
void closeAllAdapters(void)
Close all adapters in the repository.
Definition: vlib_aux.c:669
vlib_port::channel
unsigned int channel
SCSI channel.
Definition: vlib.h:452
block::allocated
size_t allocated
total number of elements in the array
Definition: vlib.h:428
VLIB_ENV_LOG_LEVEL
#define VLIB_ENV_LOG_LEVEL
Environment variable to enable logging.
Definition: vlib.h:388
VLIB_INVALID_HANDLE
#define VLIB_INVALID_HANDLE
This is the value of an invalid handle as used in this library.
Definition: vlib.h:400
HBA_SendRNIDV2
HBA_STATUS HBA_SendRNIDV2(HBA_HANDLE handle, HBA_WWN hbaPortWWN, HBA_WWN destWWN, HBA_UINT32 destFCID, HBA_UINT32 NodeIdDataFormat, void *pRspBuffer, HBA_UINT32 *pRspBufferSize)
Send a RNID ELS to a port.
Definition: vlib.c:1741
vlib_unit::target
unsigned int target
SCSI id.
Definition: vlib.h:436
vlib_FCID_to_hbaFCID
static uint32_t vlib_FCID_to_hbaFCID(uint32_t fcid)
Convert a FC DID to a FC-HBA PortFcId.
Definition: vlib_aux.h:101
vlib_event_queue
Event queue data structure used in the library.
Definition: vlib.h:418
VLIB_ADAPTERNAME_PREFIX
#define VLIB_ADAPTERNAME_PREFIX
Prefix used to concatednate an adapter name.
Definition: vlib.h:394
HBA_GetAdapterPortAttributes
HBA_STATUS HBA_GetAdapterPortAttributes(HBA_HANDLE handle, HBA_UINT32 portindex, HBA_PORTATTRIBUTES *pPortattributes)
Return attributes for an adapter port.
Definition: vlib.c:676
vlib_adapter::ports
struct block ports
List of ports.
Definition: vlib.h:478
getPortByWWPN
struct vlib_port * getPortByWWPN(const struct vlib_adapter *adapter, const wwn_t wwpn)
Get a port by its WWPN.
Definition: vlib_aux.c:249
vlib_adapter::free_event_list
struct vlib_event_queue free_event_list
Free slots.
Definition: vlib.h:480