On 21/2/21 9:21 pm, Samuel Thibault wrote:
> Mmm. I guess that's missing _hurd_init initialization. It would
> be tricky to separate out the really basic pieces from proc/auth
> initialization, I'd say it will be a lot less tricky to just make
> hurd_pci.c use the dir_readdir RPC directly on the root port instead of
> going through the readdir layer. dir_readdir is not that complex to use.

It seems to be getting stuck on dir_readdir RPC as well:

pci0: i/o space, memory space enabled, rd/line, rd/mult, wr/inv ok
PCI device_open (irq)
PCI not pci, fallback to kernel
pciaccess: hurd got device master port
PCI device_open (pci)
PCI opening...
PCI open success
enum_devices
enum_devices: pci_port is not null
netfs_S_dir_lookup!
dir_lookup 1
dir_lookup 2
dir_lookup 3
dir_lookup 4
dir_lookup 5
dir_lookup 6
dir_lookup 7
dir_lookup 8
dir_lookup end
enum_devices: root is not null
enum_devices: got to while loop
dir_readdir...

static struct dirent *
simple_readdir(mach_port_t port, uint32_t *first_entry)
{
    struct dirent *e;
    char *data;
    int nentries = 0;
    vm_size_t size;
    int err;
    mach_print ("dir_readdir...");
    err = dir_readdir (port, &data, &size, *first_entry, -1, 0, &nentries);
    mach_print ("done\n");
    if (err) {
        mach_print("dir_readdir failed\n");
        return NULL;
    }
    if (nentries) {
        *first_entry = *first_entry + 1;
        e = (struct dirent *)(data+4);
        return e;
    }
    *first_entry = 0;
    return NULL;
}

Damien

Reply via email to