Возможно вы искали: 'Dragon Quest 8: The Jo...'

May 15 2025 18:21:59
  • Как сделать 8Gamers.Ru домашней страницей?
  • Игры
    • База данных по играх
    • Игровые новости
    • Игровая индустрия
    • Обзоры на игры
    • Прохождения игр
    • Гайды к играм
    • Превью о играх
    • Игровые тизеры
    • Игровые арты
    • Игровые обои
    • Игровые скриншоты
    • Игровые обложки
    • Игровые трейлеры
    • Игровое видео
    • Вышедшие игры
    • Ближайшие релизы игр
  • Кино и ТВ
    • База данных по кино
    • Статьи о кино
    • Постеры
    • Кадры из кино
    • Кино трейлеры
    • Сегодня в кино
    • Скоро в кино
  • Комиксы и манга
    • Манга по алфавиту
    • База данных по комиксах
    • Читать онлайн комиксы
    • Читать онлайн манга
    • База персонажей
  • Читы и коды
    • Чит-коды для PC игр
    • Чит-коды для консольных игр
    • Трейнеры
    • Коды Game Genie
  • Моддинг
    • Модификации
    • Карты к играм
    • Программы для моддинга
    • Статьи о моддинге
  • Геймдев
    • Всё о создании игр
    • Список движков
    • Утилиты в помощь игроделу
    • Конструкторы игр
    • Игровые движки
    • Библиотеки разработки
    • 3D-модели
    • Спрайты и тайлы
    • Музыка и звуки
    • Текстуры и фоны
  • Рецензии
    • Игры
    • Кино
    • Аниме
    • Комиксы
    • Мангу
    • Саундтреки
  • Саундтреки
    • Лирика
  • Файлы
    • Патчи к играм
    • Русификаторы к играм
    • Сохранения к играм
    • Субтитры к кино
  • Медиа
    • Видео
    • Фото
    • Аудио
    • Фан-арты
    • Косплей
    • Фото с виставок
    • Девушки из игр
    • Рисунки
    • Рисуем онлайн
    • Фотохостинг
  • Юмор
    • Анекдоты
    • Афоризмы
    • Истории
    • Стишки и эпиграммы
    • Тосты
    • Цитаты
  • Флеш
    • Азартные
    • Аркады
    • Бродилки
    • Гонки
    • Для девочек
    • Для мальчиков
    • Драки
    • Квесты
    • Леталки
    • Логические
    • Мультфильмы
    • Открытки
    • Приколы
    • Разное
    • Спорт
    • Стратегии
    • Стрелялки
Статистика

Статей: 87772
Просмотров: 96111483
Игры
Injustice:  Gods Among Us
Injustice: Gods Among Us
...
Dark Souls 2
Dark Souls 2
Dark Souls II - вторая часть самой хардкорной ролевой игры 2011-2012 года, с новым героем, сюжето...
Battlefield 4
Battlefield 4
Battlefield 4 - продолжение венценосного мультиплеер-ориентированного шутера от первого ли...
Кино
Steins;Gate
Steins;Gate
Любители японской анимации уже давно поняли ,что аниме сериалы могут дать порой гораздо больше пи...
Ку! Кин-дза-дза
Ку! Кин-дза-дза
Начинающий диджей Толик и всемирно известный виолончелист Владимир Чижов встречают на шумной моск...
Обзоры на игры
• Обзор Ibara [PCB/PS2] 18357
• Обзор The Walking ... 18801
• Обзор DMC: Devil M... 19879
• Обзор на игру Valk... 15877
• Обзор на игру Stars! 17764
• Обзор на Far Cry 3 17948
• Обзор на Resident ... 16024
• Обзор на Chivalry:... 17508
• Обзор на игру Kerb... 17981
• Обзор игры 007: Fr... 16619
Превью о играх
• Превью к игре Comp... 17960
• Превью о игре Mage... 14464
• Превью Incredible ... 14721
• Превью Firefall 13479
• Превью Dead Space 3 16334
• Превью о игре SimC... 14730
• Превью к игре Fuse 15442
• Превью Red Orche... 15542
• Превью Gothic 3 16343
• Превью Black & W... 17354
Главная » Статьи » Разное » Зачем нужно обнулять структуры перед передачей их в ядро (kernel struct compile freebsd socket connect bind)

Зачем нужно обнулять структуры перед передачей их в ядро (kernel struct compile freebsd socket connect bind)

Ключевые слова: kernel, struct, compile, freebsd, socket, connect, bind, (найти похожие документы)

Date: Thu, 2 May 2002 20:15:55 +0000 (UTC)
From: Valentin Nechayev <netch@segfault.kiev.ua>
Newsgroups: fido7.ru.unix.prog
Subject: Зачем нужно обнулять структуры перед передачей их в ядро

> Валентин, напомни, пожалуйста, ещё раз (ты, кажется, раньше говорил),
> зачем обнулять структуры перед передачей их в ядро... А это относится

Желательно - ко всем. Хотя стандарты этого не требуют.
Почему я говорю про желательно... почитай например Ralf Brown's Interrupt List.
Какие там странности навешиваются даже у стандартного софта на
неожиданные комбинации значений в регистрах.
Впрочем, это в досе и винде, а не в юниксах.
Во FreeBSD - вплоть до последнего полугода было то, что если в sin_addr
стоит не INADDR_ANY, то ненулевые значения в sin_zero (хвост структуры
sockaddr_in) приводят к отказу bind(). Это баг, и он уже исправлен, но
не знаю как с этим в других BSD.

У других ОС возможны другие эффекты. Хотя лично не наблюдал, бегали слухи.
Пару раз я видел явное требование заливать нулями все неизвестное.

> только к BSD или к другим ОС? Пару раз в манах натыкался на то, что
> структура должна быть обнулена, сейчас в красной книжке читаю про ioctl:
> If a return value is to be generated and there is no input,
> the buffer is zeroed.

Это, наверно, не то. ioctl() в большинстве реализаций устроен так,
что заводится буфер в kernel space заданного кодом ioctl размера и
переданные данные копируются в него. Потом копируются обратно в user space.
Если копирования из user в kernel нет, то берется то, что в полученной
по kernel malloc памяти, а там всегда для страховки нули.

> Почему они так нули любят?

Вокруг нас остались только идеологические наследники System 360:
архитектура, построенная во всех проявлениях на степенях двойки,
хранение целых чисел в дополнительном коде, представление плавающего
нуля всеми нулевыми байтами. Плюс к тому - невозможность указателя
со значением 0, причем не на уровне языка, а на уровне организации памяти.
Далее, стандарт Си на заливку статических переменных нулевыми значениями.
Далее, нулевое значение флагового параметра как отсутствие всех флагов...
В общем, сложилась устойчивая традиция - нулевое значение есть значение
из машинных нулей, и нулевое значение как безопасный дефолт.
При этом, bzero оказывается методом достичь максимально безопасного состояния
во всех параметрах, включая те, существование которых неизвестно автору
кода, как с теми же sin_zero и sin_len.

Нарушений этого принципа сейчас очень мало. Самое парадоксальное из
известных мне - syslog: LOG_EMERG==0, LOG_DEBUG==7,
в результате, написав по ошибке syslog(LOG_DAEMON,...) вместо
syslog(LOG_INFO,...) - получаешь wall на все терминалы.

При этом один из первых методов нарушить спокойствие программы, базирующейся
неявно на наличии нулей в полученной динамически памяти - сделать,
чтобы там не были нули. Например, на FreeBSD можно сказать
env MALLOC_OPTIONS=J $program и с хорошей вероятностью программа спечет корку,
если криво написана.;))


/netch
1099 Прочтений •  [Зачем нужно обнулять структуры перед передачей их в ядро (kernel struct compile freebsd socket connect bind)] [08.05.2012] [Комментариев: 0]
Добавил: Ukraine Vova
Ссылки
HTML: 
[BB Url]: 
Похожие статьи
Название Добавил Добавлено
• Зачем нужно обнулять структуры пере... Ukraine Vova 08.05.2012
Ни одного комментария? Будешь первым :).
Пожалуйста, авторизуйтесь для добавления комментария.

Проект входит в сеть сайтов «8Gamers Network»

Все права сохранены. 8Gamers.NET © 2011 - 2025

Статьи
Рецензия на Pressure
Рецензия на Pressure
Чтобы обратить на себя внимание, начинающие маленькие разработчики, как правило, уходят в жанры, ...
Рецензия на Lost Chronicles of Zerzura
Рецензия на Lost Chron...
Игры, сделанные без любви и старания, похожи на воздушный шар – оболочка есть, а внутри пусто. Lo...
Рецензия на The Bridge
Рецензия на The Bridge
«Верх» и «низ» в The Bridge — понятия относительные. Прогуливаясь под аркой, можно запросто перей...
Рецензия на SimCity
Рецензия на SimCity
Когда месяц назад состоялся релиз SimCity, по Сети прокатилось цунами народного гнева – глупые ош...
Рецензия на Strategy & Tactics: World War 2
Рецензия на Strategy &...
Название Strategy & Tactics: World War II вряд ли кому-то знакомо. Зато одного взгляда на ее скри...
Рецензия на игру Scribblenauts Unlimited
Рецензия на игру Scrib...
По сложившейся традиции в информационной карточке игры мы приводим в пример несколько похожих игр...
Рецензия на игру Walking Dead: Survival Instinct, The
Рецензия на игру Walki...
Зомби и продукция-по-лицензии — которые и сами по себе не лучшие представители игровой биосферы —...
Обратная связь | RSS | Донейт | Статистика | Команда | Техническая поддержка