где будет вывод пользователя из ядра с помощью procfs?

ssize_t dev_read(struct file *filp,char *buf,size_t count,loff_t *offset)
{
    int len = count >= strlen(chr_arr.array) ? strlen(chr_arr.array) : count;
    *offset += len;

    if (*offset >= strlen(chr_arr.array))
        return 0;

    if (copy_to_user(buf,chr_arr.array,len))
        return -EFAULT;

    return len;
}

Я хочу прочитать значение из ядра и использовать его в пользовательском приложении, поэтому я использую procfs api для чтения из ядра и использования его в пользовательском пространстве.

Вышеупомянутая функция чтения предназначена для чтения из ядра и сохранения его в пользовательском буфере (buf). Но если я хочу прочитать вывод из пользовательского приложения, то где будет считываться значение из ядра, хранящегося в пользовательском пространстве? может кто-нибудь мне в этом помочь ??


person user3458454    schedule 20.04.2014    source источник


Ответы (1)


Если значение отображается в procfs, вашему пользовательскому приложению просто нужно открыть узел procfs как файл и прочитать его, как любой другой файл. Все навороты делаются в ядре.

Если вы пытаетесь написать компонент ядра, который открывает что-то для procfs, вам понадобится что-то похожее на указанный вами код для обработки вызовов read() узла procfs.

person user3553031    schedule 20.04.2014
comment
Я читаю от ядра к пользователю и делаю наоборот. но если я хочу прочитать данные в пользовательском приложении. Я должен использовать int fd = open (/ proc / ..., O_RDONLY); как мне узнать полный путь, который нужно указать, и если я хочу проверить, какое значение я прочитал из ядра ?? как это узнать ?? - person user3458454; 20.04.2014
comment
Взгляните на proc_mkdir, и его использование ответит на ваш вопрос - person Sasi V; 20.04.2014