cpqioctl.c
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:1k
- // Test program for CPQFCTS ioctl calls
- // build with:
- // gcc -o cpqioctl cpqioctl.c
- // ld -o cpqioctl /lib/crt0.o cpqioctl.o -lc
- #include <stdio.h>
- #include <sys/stat.h>
- #include <sys/ioctl.h>
- #include <fcntl.h>
- #include <unistd.h>
- #include <linux/types.h>
- #include "../../include/scsi/scsi.h"
- #include "cpqfcTSioctl.h"
- typedef struct scsi_fctargaddress {
- unsigned long host_port_id;
- unsigned char host_wwn[8];
- } Scsi_FCTargAddress;
- int main(int argc, char **argv) {
- int fd, i;
- Scsi_FCTargAddress targ;
- int uselect=0;
- if ( argc < 2 ) {
- printf("usage: cpqioctl <Devfile>n");
- exit(1);
- }
- if ( (fd = open(argv[1], O_RDONLY)) == -1) {
- perror("open");
- exit(1);
- }
- if ( ioctl(fd, SCSI_IOCTL_FC_TARGET_ADDRESS, &targ) ) {
- perror("ioctl");
- exit(1);
- }
- printf("portid: %08x. wwn: ", targ.host_port_id);
- for (i=0;i<8;i++) printf(" %02x", targ.host_wwn[i]);
- printf("n");
- while( uselect != 27 ) // not ESC key
- {
- printf("n IOCTL n");
- printf( "1. Get PCI infon");
- printf( "2. Send Passthrun");
- printf( " ==> ");
- scanf("%c", &uselect);
- switch( uselect )
- {
- case '1':
- {
- cciss_pci_info_struct pciinfo;
-
- if( ioctl( fd, CCPQFCTS_GETPCIINFO ,&pciinfo ))
- perror("ioctl");
- else
- printf( "nPCI bus %d, dev_fn %d, board_id %Xhn",
- pciinfo.bus, pciinfo.dev_fn, pciinfo.board_id);
- }
- }
- }
- close(fd);
- return 0;
- }