bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

user-level drivers


From: Samuel Thibault
Subject: user-level drivers
Date: Mon, 9 May 2011 00:07:16 +0200
User-agent: Mutt/1.5.12-2006-07-14

Hello,

I've started having a look at Zheng Da's user-level driver integration.
I've cleaned his tree a bit, and now considering adding patches to
the debian packages for wider testing.  The patches however add a few
kernel RPCs, which we should probably agree on first, at the minimum
that their existence makes sense, so we can reserve slots in upstream
gnumach.  Basically, it's about allocating physically-contiguous memory
for DMAs, and getting IRQ events:

/*
 *      This routine is created for allocating DMA buffers.
 *      We are going to get a contiguous physical memory
 *      and its physical address in addition to the virtual address.
 */
routine vm_allocate_contiguous(
                host_priv       : host_priv_t;
                target_task     : vm_task_t;
        out     vaddr           : vm_address_t;
        out     paddr           : vm_address_t;
                size            : vm_size_t);

/* Requesting IRQ events on a port */

routine device_intr_notify(
               master_port     : mach_port_t;
       in      irq             : int;
       in      id              : int;
       in      flags           : int;
       in      receive_port    : mach_port_send_t
       );

The actual event:

simpleroutine mach_notify_irq(
               notify  : notify_port_t;
               name    : int);

And a way to mask/unmask irqs:

/*
 *     enable/disable the specified irq.
 */
routine device_irq_enable(
               master_port     : mach_port_t;
               irq             : int;
               status          : char);

Should this be rather split into device_irq_enable/disable and drop the
status paramter?

Samuel



reply via email to

[Prev in Thread] Current Thread [Next in Thread]