anonymous@RULINUX.NET~# Last login: 2024-11-22 22:42:41
Регистрация Вход Новости | Разметка | Пользователи | Галерея | Форум | Статьи | Неподтвержденное | Трекер | Правила форума | F.A.Q. | Ссылки | Поиск
[#] [Добавить метку] [Редактировать]
Скрыть

char a[1000] в ядреной функции?

А что, разве существует какое-то ограничение на длину статического массива, который можно определить внутри функции в ядре?

Например, 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

[Ответить на это сообщение]
[#] [Добавить метку] [Редактировать] Ответ на: char a[1000] в ядреной функции? от anonymous 2009-05-20 03:27:30
avatar
Скрыть

Re:char a[1000] в ядреной функции?

массив сей станет быть в стеке, а размер стека ограничен

bugmaker(*)(2009-05-20 14:29:05)

Opera/9.62 (X11; Linux i686; U; en) Presto/2.1.1
[#] [Добавить метку] [Редактировать] Ответ на: char a[1000] в ядреной функции? от anonymous 2009-05-20 03:27:30
avatar
Скрыть

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
[#] [Добавить метку] [Редактировать] Ответ на: char a[1000] в ядреной функции? от anonymous 2009-05-20 03:27:30
avatar
Скрыть

Re:char a[1000] в ядреной функции?

>Или всем, кто не прогуливал занятия, это и так должно быть понятно?

Я прогуивал, но вспоминается что то про первое кольцо, в котором ядро работает.

marsijanin(*)(2009-05-20 20:16:49)

Emacs-w3m/1.4.335 w3m/0.5.2
[#] [Добавить метку] [Редактировать] Ответ на: char a[1000] в ядреной функции? от anonymous 2009-05-20 03:27:30
avatar
Скрыть

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
[#] [Добавить метку] [Редактировать] Ответ на: char a[1000] в ядреной функции? от anonymous 2009-05-20 03:27:30
avatar
Скрыть

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
[#] [Добавить метку] [Редактировать] Ответ на: char a[1000] в ядреной функции? от anonymous 2009-05-20 03:27:30
avatar
Скрыть

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
[#] [Добавить метку] [Редактировать] Ответ на: char a[1000] в ядреной функции? от anonymous 2009-05-20 03:27:30
avatar
Скрыть

Запчасти Форд, запчасти 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]

anonymous(*)(2009-07-15 23:12:55)

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 8.01
[#] [Добавить метку] [Редактировать] Ответ на: char a[1000] в ядреной функции? от anonymous 2009-05-20 03:27:30
avatar
Скрыть

Re:Запчасти Форд, запчасти ford, запчасти форд фокус, запчасти форд мондео

Ваши форды для буржуев.

anonymous(*)(2009-07-16 00:53:31)

Мажида Руми- это лучшее, что есть!
[#] [Добавить метку] [Редактировать] Ответ на: char a[1000] в ядреной функции? от anonymous 2009-05-20 03:27:30
avatar
Скрыть

как прекрасен этот мир. пасматри !!!

Текст (слова) песни Ты проснешься на рассвете мы с тобою вместе встретим день рождения зари Как прекрасен этот мир посмотри как прекрасен этот мир Как прекрасен этот мир посмотри как прекрасен этот мир

Ты не можешь не заметить соловьи живут на свете и простые сизари Как прекрасен этот мир посмотри как прекрасен этот мир Как прекрасен этот мир посмотри как прекрасен этот мир

Ты взглянула и минуты остановлены как будто как росинки их бери Как прекрасен этот мир посмотри как прекрасен этот мир Как прекрасен этот мир посмотри как прекрасен этот мир Как прекрасен этот мир посмотри как прекрасен этот мир

anonymous(*)(2009-07-22 16:00:55)

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Netscape/8.0.4
Этот тред читают 1 пользователь:
Анонимных: 1
Зарегистрированных: 0




(c) 2010-2020 LOR-NG Developers Group
Powered by TimeMachine

Valid HTML 4.01 Transitional Правильный CSS!