⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cpqioctl.c

📁 Linux内核源代码 为压缩文件 是<<Linux内核>>一书中的源代码
💻 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 + -