Wie kann ich unter Linux den Dateinamen aus der Struktur "struct file" abrufen, während ich mit kgdb durch den Kernel gehe?

Ich versuche, den Dateinamen über kgdb anzuzeigen, daher kann ich keine Funktionen und Makros aufrufen, um ihn programmgesteuert abzurufen. Ich muss es finden, indem ich Datenstrukturen manuell inspiziere.

Als ob ich hier in gdb einen Haltepunkt hätte, wie könnte ich mich mit gdb umsehen und den Dateinamen finden?

Ich habe versucht, mich umzusehenfilp.f_path, filp.f_inodeusw. Ich kann den Dateinamen nirgendwo sehen.

ssize_t do_sync_write(struct file *filp, const char __user *buf, size_t len, loff_t *ppos)
{
     struct iovec iov = { .iov_base = (void __user *)buf, .iov_len = len };
     struct kiocb kiocb;
     ssize_t ret;

     init_sync_kiocb(&kiocb, filp);
     kiocb.ki_pos = *ppos;
     kiocb.ki_left = len;
     kiocb.ki_nbytes = len;

     ret = filp->f_op->aio_write(&kiocb, &iov, 1, kiocb.ki_pos);
     if (-EIOCBQUEUED == ret)
             ret = wait_on_sync_kiocb(&kiocb);
     *ppos = kiocb.ki_pos;
     return ret;
}

Antworten auf die Frage(3)

Ihre Antwort auf die Frage