📄 cpqioctl.c
字号:
// 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 info\n"); printf( "2. Send Passthru\n"); 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 %Xh\n", pciinfo.bus, pciinfo.dev_fn, pciinfo.board_id); } } } close(fd); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -