/idt.h

https://bitbucket.org/seed/kernalion · C Header · 32 lines · 24 code · 6 blank · 2 comment · 0 complexity · f65556845202cd9312211978d54b7f3e MD5 · raw file

  1. #ifndef _IDT_H_
  2. # define _IDT_H_
  3. # define IDT_NB_ENTRIES 256
  4. struct int_gate_s
  5. {
  6. unsigned short offset_low; // offset 0-15 bits
  7. unsigned short segment_sel;// segment selector
  8. unsigned char reserved; // must be zeroed
  9. unsigned char flags; // flags
  10. unsigned short offset_high;// offset 16-31 bits
  11. } __attribute__((packed));
  12. typedef struct int_gate_s int_gate_t;
  13. // A struct describing a pointer to an array of interrupt handlers.
  14. // This is in a format suitable for giving to 'lidt'.
  15. struct lidt_param_s
  16. {
  17. unsigned short limit; // IDT size in bytes
  18. unsigned int base; // IDT address
  19. } __attribute__((packed));
  20. typedef struct lidt_param_s lidt_param_t;
  21. void init_idt(void);
  22. void init_tick(void);
  23. void init_pic(void);
  24. void set_interrupt(unsigned char index, unsigned int offset, unsigned short segment_sel, unsigned char flags);
  25. void load_idt();
  26. #endif /* !_IDT_H_ */