ZFCP HBA API Library 1
vlib_sysfs.h
Go to the documentation of this file.
1/*
2 * Copyright IBM Corp. 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: Sven Schuetz <sven@de.ibm.com>
9 * contains code from vlib_aux.h
10 * by Andreas Herrmann and Stefan Voelkel
11 *
12 * File: vlib_sysfs.h
13 *
14 * Description:
15 * Function declarations and inline functions that use the sysfs.
16 *
17 */
18
19#ifndef _VLIB_SYSFS_H_
20#define _VLIB_SYSFS_H_
21
22
23#define ZFCP_SYSFS_PATH "/sys/bus/ccw/drivers/zfcp"
24#define FC_HOST_PATH "/sys/class/fc_host"
25
26#define ATTR_MAX 80 /* all attributes are only one line */
27#define DEVNO_LENGTH 8 /* x.x.xxxx -> 8 chars */
28
36HBA_STATUS sysfs_getDiscoveredPortAttributes(HBA_PORTATTRIBUTES **,
37 struct vlib_port *);
38HBA_STATUS sysfs_getAdapterAttributes(HBA_ADAPTERATTRIBUTES **,
39 struct vlib_adapter *);
40HBA_STATUS sysfs_getAdapterPortAttributes(HBA_PORTATTRIBUTES **,
41 struct vlib_adapter *);
42HBA_STATUS sysfs_getPortStatistics(HBA_PORTSTATISTICS **,
43 struct vlib_adapter *);
45void sysfs_waitForSgDev(char *);
46
59static inline HBA_STATUS revalidateRepository(void)
60{
62 return HBA_STATUS_ERROR;
63
64 if (!vlib_data.isValid) {
65 if (sysfs_createAndReadConfigAdapter() != HBA_STATUS_OK)
66 return HBA_STATUS_ERROR;
67 }
68
69 return HBA_STATUS_OK;
70}
71
84static inline int revalidatePorts(struct vlib_adapter *adapter)
85{
86 if (0 == adapter->ports.allocated)
87 return sysfs_createAndReadConfigPorts(adapter);
88
89 return 0;
90}
91
105static inline int revalidateUnits(struct vlib_port *port)
106{
107 if (0 == port->units.allocated)
108 return sysfs_getUnitsFromPort(port);
109
110 return 0;
111}
112
113#endif /*_VLIB_SYSFS_H_*/
size_t allocated
total number of elements in the array
Definition: vlib.h:428
Represenation of an adapter in the library.
Definition: vlib.h:474
struct block ports
List of ports.
Definition: vlib.h:478
Primary data structure used in the library.
Definition: vlib.h:484
unsigned int isValid
Repositoy valid or not This flag is set for instance if a loss of events is detected.
Definition: vlib.h:487
unsigned int isLoaded
Library loaded or not.
Definition: vlib.h:485
Representation of a FC port in the library.
Definition: vlib.h:443
struct block units
List of units.
Definition: vlib.h:448
HBA_STATUS sysfs_getDiscoveredPortAttributes(HBA_PORTATTRIBUTES **, struct vlib_port *)
Retrieve adapter attributes.
Definition: vlib_sysfs.c:408
HBA_STATUS sysfs_createAndReadConfigPorts(struct vlib_adapter *)
Read and store all discovered ports of an adapter.
Definition: vlib_sysfs.c:226
int sysfs_getUnitsFromPort(struct vlib_port *)
Get unit configuration information for a port.
Definition: vlib_sysfs.c:310
HBA_STATUS sysfs_getPortStatistics(HBA_PORTSTATISTICS **, struct vlib_adapter *)
Retrieve adapter port statistics.
Definition: vlib_sysfs.c:595
HBA_STATUS sysfs_getAdapterAttributes(HBA_ADAPTERATTRIBUTES **, struct vlib_adapter *)
Retrieve adapter attributes.
Definition: vlib_sysfs.c:495
static int revalidateUnits(struct vlib_port *port)
Revalidate units of an adapter and port in the repository.
Definition: vlib_sysfs.h:105
static HBA_STATUS revalidateRepository(void)
Check status of the repository, and possibly revalidate it.
Definition: vlib_sysfs.h:59
static int revalidatePorts(struct vlib_adapter *adapter)
Revalidate ports of an adapter in the repository.
Definition: vlib_sysfs.h:84
HBA_STATUS sysfs_getAdapterPortAttributes(HBA_PORTATTRIBUTES **, struct vlib_adapter *)
Retrieve adapter attributes.
Definition: vlib_sysfs.c:443
HBA_STATUS sysfs_createAndReadConfigAdapter()
Read all adapters from /sys/bus/ccw/drivers/zfcp and add them to the repository.
Definition: vlib_sysfs.c:260