FSTWikiRev. 1.4 KernelApi4
Login:
Password:
Join
E D R S I H P RSS
FrontPage|FindPage|TitleIndex|RecentChanges

Kernel API 4 - Porting(ARM) #


-- 김도집 2005-09-28 17:37:04

Contents

1 Kernel API 4 - Porting(ARM)
1.1 Co-processor
1.1.1 Instruction
1.2 인터럽트
1.2.1 struct irqchip
1.2.2 struct irqdesc
1.2.3 set_irq_chip
1.2.4 set_irq_handler
1.2.5 set_irq_chained_handler
1.2.6 set_irq_flags
1.2.7 set_irq_type

1.1 Co-processor #

1.1.1 Instruction #

ARM은 Core 외에도 Co-processor로 그 기능을 확장 가능하도록 하고 있다. 일반적으로 알고 있는 MMU 및 Cache 관련 Co-processor의 ?CP15가 바로 그것이다.

이러한 Co-processor를 위하여 ARM에서는 특별한 intstruction을 정의하고 있다. 그 포맷은 다음과 같다.

MCR/MRC{cond} P15, opcode_1, Rd, CRn, CRm, opcode_2

1.2 인터럽트 #

1.2.1 struct irqchip #

struct irq {
  void (*ack)(unsigned int);
  void (*mask)(unsigned int);
  void (*unmask)(unsigned int);
  int (*retrigger)(unsigned int);
  int (*type)(unsigned int, unsigned int);
  int (*wake)(unsigned int, unsigned int);
#ifdef CONFIG_SMP
  void (*set_cpu)(struct irqdesc *desc, unsigned int irq, unsigned int cpu);
#endif

1.2.2 set_irq_chip #

함수 원형은 다음과 같다.
void set_irq_chip(unsigned int irq, struct irqchip *chip);

1.2.3 set_irq_handler #

함수 원형
void set_irq_handler(unsigned int irq, irq_handler_t handler);

irq_handler_t는 <asm/arch/irq.h>에 다음과 같이 선언되어 있다.
typedef void (*irq_handler_t)(unsigned int, struct irqdesc *, struct pt_regs *);

유사 함수: set_irq_chained_handler

커널 소스내에서 본 함수는 __set_irq_handler(irq, handler, 0)을 호출한다.

1.2.4 set_irq_chained_handler #

함수 원형은 다음과 같다.
void set_irq_chained_handler(unsigned int irq, irq_handler_t handler);

irq_handler_t는 <asm/arch/irq.h>에 다음과 같이 선언되어 있다.
typedef void (*irq_handler_t)(unsigned int, struct irqdesc *, struct pt_regs *);

유사 함수: set_irq_handler

커널 소스 내에서 본 함수는 __set_irq_handler(irq, handler, 1)을 호출한다.

1.2.5 set_irq_flags #

함수 원형은 다음과 같다.
void set_irq_flags(unsigned int irq, unsigned int iflags);

last modified 2006-05-09 11:06:33
ShowPage|FindPage|DeletePage|LikePages Valid XHTML 1.0! Valid CSS! powered by MoniWiki
0.0224 sec