anonymous@RULINUX.NET~# | Last login: 2024-11-05 13:26:48 |
Регистрация Вход | Новости | Разметка | Пользователи | Галерея | Форум | Статьи | Неподтвержденное | Трекер | Правила форума | F.A.Q. | Ссылки | Поиск |
Форум - Development | [RSS] |
А что, разве существует какое-то ограничение на длину статического массива, который можно определить внутри функции в ядре?
Например, static ssize_t ldevpcib_read(struct file *file, char *buf, size_t count, loff_t *offset) .... char zz[count]; ....
сопровождается oops-ами и руганью на pageing, если count>4096 (размер страницы). В таком случае приходится выделять память через kmalloc.
Вот я и интересуюсь, какова фундаментальная причина такого поведения? Че-то нигде в руководствах об этом особо не распространяются.
anonymous(*) (2009-05-20 03:27:30)
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.4) Gecko/20070601 SeaMonkey/1.1.2
|
|
|
Скрыть
Re:char a[1000] в ядреной функции?Спасибо, только всё-равно не понятно. Пусть в ядре размер стека ограничен одной страницей. Что ж тогда получается, я не могу определить там статических переменных больше чем 4кБ? Ну, и связанные вопросы - а в userland-е каков размер стека? И почему в ядре он такой маленький - это где-то в документации объясняется? Или всем, кто не прогуливал занятия, это и так должно быть понятно? anonymous(*)(2009-05-20 16:35:17)
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.4) Gecko/20070601 SeaMonkey/1.1.2 |
Скрыть
Re:char a[1000] в ядреной функции?>Или всем, кто не прогуливал занятия, это и так должно быть понятно? Я прогуивал, но вспоминается что то про первое кольцо, в котором ядро работает. |
Скрыть
Re:char a[1000] в ядреной функции?Оказывается, фиксированный стек выбран сознательно - для большей простоты. Его можно даже поменять с 8k на 4k (4KSTACKS в Kernel Hacking -> Kernel Debugging). А с его размером - это я напутал. На самом деле он 8 кбайт. anonymous(*)(2009-05-20 22:29:43)
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.4) Gecko/20070601 SeaMonkey/1.1.2 |
Скрыть
Re:char a[1000] в ядреной функции?char zz[count]; - это не объявление статического массива - это массив аллоцируемый на стеке. static char zz[count]; - вот объявление статического массива, который будет аллоцирован в сегменте данных. на кернеле да, не объявляй на стеке большие данные, на юзере - при нехватке стека должно срабатывать page fault exception, обработчик которого подмаппит новую страницу стека. На кернеле ты можешь быть в контексте с запретом прерываний - обработчик прерывания по page fault exception не вызовется никогда. anonymous(*)(2009-05-22 13:01:53)
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.13) Gecko/20080327 Firefox/2.0.0.13 |
Скрыть
Re:char a[1000] в ядреной функции?>>static char zz[count]; - вот объявление статического массива Это правильно, конечно, только эта конструкция обрабатывается при компиляции, когда count ещё неизвестен, так что компилятор вылетит с ошибкой. В остальном я согласен. Правильнее было бы назвать его временным массивом. anonymous(*)(2009-05-22 16:59:17)
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.4) Gecko/20070601 SeaMonkey/1.1.2 |
Скрыть
Запчасти Форд, запчасти ford, запчасти форд фокус, запчасти форд мондеоПредлагаем запчасти форд, запчасти форд по выгодным ценам, в наличии и под заказ. Предлагаем Вам оригинальные запчасти форд. Оригинальные запчасти Форд имеют гарантию производителя, от 6ти-12ти месяцев обязательный номер и наличие на упаковке логотипа Ford. В наличии широкий ассортимент запчастей дла автомобилей форд. Амортизаторы для форд фокус, [url=http://www.eurozapchast.ru] Запчасти форд фокус [/url] Сцепления, Маховики, поршня для автомобилей форд, форсунки форд транзит, форд коннект. Мы поставляем запчасти форд из Европы и наши цены заметно отличаются от цен конкурентов. Также в продаже двигателя форд, [url=http://www.eurozapchast.ru] Двигатель форд фокус [/url] Весь спект запчастей в наличии с нашего склада, с центрального склада форд, поставка запчастей форд [url=http://www.eurozapchast.ru]Запчасти Форд [/url] [url=http://www.eurozapchast.ru] Запчасти форд транзит [/url] |
Скрыть
Re:Запчасти Форд, запчасти ford, запчасти форд фокус, запчасти форд мондеоВаши форды для буржуев. |
Скрыть
как прекрасен этот мир. пасматри !!!Текст (слова) песни Ты проснешься на рассвете мы с тобою вместе встретим день рождения зари Как прекрасен этот мир посмотри как прекрасен этот мир Как прекрасен этот мир посмотри как прекрасен этот мир Ты не можешь не заметить соловьи живут на свете и простые сизари Как прекрасен этот мир посмотри как прекрасен этот мир Как прекрасен этот мир посмотри как прекрасен этот мир Ты взглянула и минуты остановлены как будто как росинки их бери Как прекрасен этот мир посмотри как прекрасен этот мир Как прекрасен этот мир посмотри как прекрасен этот мир Как прекрасен этот мир посмотри как прекрасен этот мир |
|
|
|
Этот тред читают 4 пользователя: |
Анонимных: 4 Зарегистрированных: 0 |
Re:char a[1000] в ядреной функции?
массив сей станет быть в стеке, а размер стека ограничен
Opera/9.62 (X11; Linux i686; U; en) Presto/2.1.1