EzDoum

찾기
처음으로 | 찾기 | 아카이브 | 글 올리기 | 링크 | 자료실 | 통계 | 연락처 | 자유게시판
이지도움 특집
전체보기
네트워크
TI OMAP35x
TI DaVinci
Analog Blackfin
RobotWar2005
임베디드!
캐쉬의 모든것
메모리 할당 알고리즘
CPU 파이프라이닝
자료구조(Tree)
금융

Login
이름

암호

기억하기


사용자 등록

현재 접속중인 등록 사용자는 0명, 익명 사용자는 2명 입니다.
전체 등록 사용자: 751명

마지막 답장
·libcurl + fuse 조합으로 되는게 많네. (1)
·Linux Ftrace에 관해 (3)
·Android MTP ( Media Transfer Protocol ) (1)
·Lighttpd에 인증을 digest 사용시 IE 오동작 문제? (1)
·Dtrace에 관해 (1)

최근글
·OpenSSL and multi-threads (0)
·ARM 환경에서 OpenCL 사용 (0)
·IoT용 WIFI 모듈 비교 ( MCU ) 클래스 (0)
·Glances - 리눅스 여러 가지 항목을 한 화면에서 모니터링 (0)
·plugin 방식의 로그 분석기 (0)

뜨거운 감자
·나는 인터렉티브한 환경에서 역어셈블 한다. (12)
·GNU REGEX (정규표현식) 프로그래밍 강좌 (7)
·SoCRobotWar 2005 - 신입생 기초 교육자료 (7)
·ASP.NET의 데이터 그리드와 사용자 컨트롤 (7)
·DHTML Editing Control (7)

가장 많이 읽은 글
·[Cache] 2-way Set-Associative 방식이란 무엇일까? (2)
·멀티쓰레드(Pthread) 프로그래밍
·GNU REGEX (정규표현식) 프로그래밍 강좌 (7)
·Sorting Algorithm Animation (2)
·SoCRobotWar 2005 - 신입생 기초 교육자료 (7)

ioctl로 ATA command 내리기
글쓴이: EzDoum 글쓴날: 2012년 10월 18일 오후 04:40




http://www.mjmwired.net/kernel/Documentation/ioctl/hdio.txt#729

ATA 커맨드를 직접 내려야 하는 상황이 있어서
드라이버 레이어서 작업을 하려고 하다가 혹시나 싶어서 찾아 봤더니 ioctl로 가능하네.
hdparam도 이 인터페이스를 쓰나 보네.


  1. HDIO_DRIVE_CMD      execute a special drive command
  2.  
  3.         Note:  If you don't have a copy of the ANSI ATA specification
  4.         handy, you should probably ignore this ioctl.
  5.  
  6.         usage:
  7.  
  8.           u8 args[4+XFER_SIZE];
  9.           ...
  10.           ioctl(fd, HDIO_DRIVE_CMD, args);
  11.  
  12.         inputs:
  13.  
  14.           Commands other than WIN_SMART
  15.             args[0]     COMMAND
  16.             args[1]     NSECTOR
  17.             args[2]     FEATURE
  18.             args[3]     NSECTOR
  19.  
  20.           WIN_SMART
  21.             args[0]     COMMAND
  22.             args[1]     SECTOR
  23.             args[2]     FEATURE
  24.             args[3]     NSECTOR
  25.  
  26.         outputs:
  27.  
  28.           args[] buffer is filled with register values followed by any
  29.           data returned by the disk.
  30.             args[0]     status
  31.             args[1]     error
  32.             args[2]     NSECTOR
  33.             args[3]     undefined
  34.             args[4+]    NSECTOR * 512 bytes of data returned by the command.
  35.  
  36.         error returns:
  37.           EACCES        Access denied:  requires CAP_SYS_RAWIO
  38.           ENOMEM        Unable to allocate memory for task
  39.           EIO      Drive reports error
  40.  
  41.         notes:
  42.  
  43.           [1] For commands other than WIN_SMART, args[1] should equal
  44.           args[3].  SECTOR, LCYL and HCYL are undefined.  For
  45.           WIN_SMART, 0x4f and 0xc2 are loaded into LCYL and HCYL
  46.           respectively.  In both cases SELECT will contain the default
  47.           value for the drive.  Please refer to HDIO_DRIVE_TASKFILE
  48.           notes for the default value of SELECT.
  49.  
  50.           [2] If NSECTOR value is greater than zero and the drive sets
  51.           DRQ when interrupting for the command, NSECTOR * 512 bytes
  52.           are read from the device into the area following NSECTOR.
  53.           In the above example, the area would be
  54.           args[4..4+XFER_SIZE].  16bit PIO is used regardless of
  55.           HDIO_SET_32BIT setting.
  56.  
  57.           [3] If COMMAND == WIN_SETFEATURES && FEATURE == SETFEATURES_XFER
  58.           && NSECTOR >= XFER_SW_DMA_0 && the drive supports any DMA
  59.           mode, IDE driver will try to tune the transfer mode of the
  60.           drive accordingly.
  61.  
  62.  
  63.  
  64. HDIO_DRIVE_TASK   execute task and special drive command
  65.  
  66.         Note:  If you don't have a copy of the ANSI ATA specification
  67.         handy, you should probably ignore this ioctl.
  68.  
  69.         usage:
  70.  
  71.           u8 args[7];
  72.           ...
  73.           ioctl(fd, HDIO_DRIVE_TASK, args);
  74.  
  75.         inputs:
  76.  
  77.           Taskfile register values:
  78.             args[0]     COMMAND
  79.             args[1]     FEATURE
  80.             args[2]     NSECTOR
  81.             args[3]     SECTOR
  82.             args[4]     LCYL
  83.             args[5]     HCYL
  84.             args[6]     SELECT
  85.  
  86.         outputs:
  87.  
  88.           Taskfile register values:
  89.             args[0]     status
  90.             args[1]     error
  91.             args[2]     NSECTOR
  92.             args[3]     SECTOR
  93.             args[4]     LCYL
  94.             args[5]     HCYL
  95.             args[6]     SELECT
  96.  
  97.         error returns:
  98.           EACCES        Access denied:  requires CAP_SYS_RAWIO
  99.           ENOMEM        Unable to allocate memory for task
  100.           ENOMSG        Device is not a disk drive.
  101.           EIO      Drive failed the command.
  102.  
  103.         notes:
  104.  
  105.           [1] DEV bit (0x10) of SELECT register is ignored and the
  106.           appropriate value for the drive is used.  All other bits
  107.           are used unaltered.


  • 관련 링크
  • [분류: 리눅스 커널 인쇄용 페이지 본문 email로 보내기 ]

    <  SATA protocol overview | libcurl + fuse 조합으로 되는게 많네.  >

    답장 쓰기
    글을 올리시려면 로그인 (사용자 등록) 하셔야 합니다.

    검색
    Google

    분류
    ·공지 (6)
    ·인터넷 (87)
    ·하드웨어 (260)
    ·C/C++ (65)
    ·어셈블리 (7)
    ·리눅스 (136)
    ·리눅스 커널 (67)
    ·윈도우즈 (25)
    ·데이터베이스 (20)
    ·보안 (16)
    ·.NET (25)
    ·그래픽 (13)
    ·책소개 (42)
    ·호기심 천국 (80)
    ·잡담 (111)
    ·사랑 (3)

    전체 본문수: 963
    전체 답장수: 525


    분류 : 리눅스 커널
    최근글
    최근글
    가장 많이 읽은 글
    ·리눅스 커널 공부하기 (2)
    뜨거운 감자
    ·SunWorld Online (4)

    EzDoum투표
    이지도움 어때요?
    이게 뭐야. 다시 안올란다. --;
    아이 좋아라~ +_+;
    관심없다.
    먼가는 있는거 같은데 뭐하는 곳이지?
    기타 (자유게시판에 글로 남겨 주세요)
    [ 결과 | 투표 ]

    랜덤 링크
    http://kldp.net


     Home ^ BACK TO TOP ^ EzDoum - 도움이 필요하세요~??
     Powered by KorWeblog 1.5.8 Copyleft © 2001 EzDoum, 관리자: EzDoum