2009-03-02 30 views
5

Tôi hiện đang cố gắng để có được một inode cho một tên đường dẫn nhất định trong một chức năng hạt nhân. Tất cả những gì tôi có là tên đường dẫn đầy đủ. Tôi đã thử các nỗ lực như:Nhận inode từ đường dẫn trong Linux Kernel

user_path_at(AT_FDCWD, buffer, LOOKUP_FOLLOW, &path); 

Nhưng hàm răng giả trong đường dẫn đã cho đó không hợp lệ, có vẻ như tắt. Sau đó, tôi nghĩ có lẽ cố gắng stat() và nhận được số inode từ đó. Tuy nhiên, điều đó chỉ mang lại cho tôi một con số, không phải là một cấu trúc inode. Tôi không biết một cách để chuyển đổi một số inode thành một inode mà không cần lấy một inode hiện tại và duyệt qua toàn bộ danh sách các inode. Và tôi thậm chí không biết điều đó có hiệu quả hay không. Nhưng tôi chắc chắn không muốn làm điều đó.

Có cách nào đơn giản để lấy mã inode cấu trúc từ một tên đường dẫn char * bên trong hạt nhân không?

Trả lời

0

Không có cách nào dễ dàng vì struct inode là một phần của hạt nhân và bạn đang ở trong không gian người dùng. Tất cả phụ thuộc vào việc triển khai hệ thống tập tin cụ thể. Bạn có chắc rằng thông tin trong cấu trúc stat không đủ cho nhu cầu của bạn?

Dù sao, this link có thể hữu ích.

+1

Nó chỉ đánh tôi (sau khoảng 3 giờ) rằng stat() sẽ đủ cho nhu cầu của tôi, vì tôi chỉ cần thông tin. Tôi trở nên say đắm vì nhận được inode mà tôi đã mất một phần tầm nhìn của mình. Và tôi đang làm điều này từ bên trong hạt nhân. Vì vậy, thực hiện stat() thực sự không phải là tối ưu, nhưng sẽ làm. –

+0

Liên kết đã chết. Đó là lý do tại sao các câu trả lời chỉ có liên kết là xấu. – MSalters

2

stat() sẽ cung cấp cho bạn inode của tệp trong trường "st_ino".

Xin lỗi, sự hiểu lầm ban đầu của câu hỏi.

Nếu bạn muốn cấu trúc inode thực trong hạt nhân, tôi chắc chắn bản thân hạt nhân sẽ không đi bộ một mảng hoặc danh sách tìm số inode (trừ khi danh sách rất nhỏ). Kể từ khi mã cho hạt nhân là công khai có sẵn, bạn sẽ có thể tìm hiểu nó như thế nào, sau đó làm như vậy.

+0

Tôi đã lưu ý rằng trong bài đăng của mình. Tuy nhiên, điều đó chỉ mang lại cho tôi số inode, không phải cấu trúc inode cần thiết để lấy thông tin về tệp. –

Các vấn đề liên quan