Changeset b3f8fb7 in mainline for kernel/generic/include/ddi/irq.h


Ignore:
Timestamp:
2007-01-28T13:25:49Z (18 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
8e8c1a5
Parents:
1ba41c5
Message:

huge type system cleanup
remove cyclical type dependencies across multiple header files
many minor coding style fixes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/include/ddi/irq.h

    r1ba41c5 rb3f8fb7  
    3636#define KERN_IRQ_H_
    3737
     38typedef enum {
     39        CMD_MEM_READ_1 = 0,
     40        CMD_MEM_READ_2,
     41        CMD_MEM_READ_4,
     42        CMD_MEM_READ_8,
     43        CMD_MEM_WRITE_1,
     44        CMD_MEM_WRITE_2,
     45        CMD_MEM_WRITE_4,
     46        CMD_MEM_WRITE_8,
     47        CMD_PORT_READ_1,
     48        CMD_PORT_WRITE_1,
     49        CMD_IA64_GETCHAR,
     50        CMD_PPC32_GETCHAR,
     51        CMD_LAST
     52} irq_cmd_type;
     53
     54typedef struct {
     55        irq_cmd_type cmd;
     56        void *addr;
     57        unsigned long long value;
     58        int dstarg;
     59} irq_cmd_t;
     60
     61typedef struct {
     62        unsigned int cmdcount;
     63        irq_cmd_t *cmds;
     64} irq_code_t;
     65
     66#ifdef KERNEL
     67
    3868#include <arch/types.h>
    39 #include <typedefs.h>
    4069#include <adt/list.h>
    41 #include <ipc/irq.h>
    4270#include <synch/spinlock.h>
     71#include <proc/task.h>
    4372
    4473typedef enum {
     
    5281} irq_trigger_t;
    5382
    54 typedef void (* irq_handler_t)(irq_t *irq, void *arg, ...);
     83struct irq;
     84typedef void (* irq_handler_t)(struct irq *irq, void *arg, ...);
     85
     86
     87
     88/** IPC notification config structure.
     89 *
     90 * Primarily, this structure is encapsulated in the irq_t structure.
     91 * It is protected by irq_t::lock.
     92 */
     93typedef struct {
     94        bool notify;                    /**< When false, notifications are not sent. */
     95        answerbox_t *answerbox;         /**< Answerbox for notifications. */
     96        unative_t method;               /**< Method to be used for the notification. */
     97        irq_code_t *code;               /**< Top-half pseudocode. */
     98        count_t counter;                /**< Counter. */
     99        link_t link;                    /**< Link between IRQs that are notifying the
     100                                             same answerbox. The list is protected by
     101                                             the answerbox irq_lock. */
     102} ipc_notif_cfg_t;
    55103
    56104/** Structure representing one device IRQ.
     
    60108 * devno.
    61109 */
    62 struct irq {
     110typedef struct irq {
    63111        /** Hash table link. */
    64112        link_t link;
     
    87135        /** Notification configuration structure. */
    88136        ipc_notif_cfg_t notif_cfg;
    89 };
     137} irq_t;
    90138
    91139extern void irq_init(count_t inrs, count_t chains);
     
    97145#endif
    98146
     147#endif
     148
    99149/** @}
    100150 */
Note: See TracChangeset for help on using the changeset viewer.