LINUX.ORG.RU

Избранные сообщения splinter

Портирование ядра. Написал драйвер UART как корректно его подключить.

 spmu8000, ,

Здравствуйте. Я пытаюсь портировать ядро линукс на процессор SPMP8000 (основан на arm926). Я написал свой драйвер ЮАРТ (пока сильно упрощенный вариант). Вот код драйвера:

#include <linux/console.h>
#include <linux/serial_core.h>
#include <asm/io.h>
#include <mach/serial.h>

#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/device.h>
#include <linux/spinlock.h>
#include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/sched.h>
#include <linux/smp.h>
#include <linux/termios.h>
#include <linux/amba/bus.h>
#include <linux/amba/serial.h>
#include <linux/io.h>
#include <mach/platform.h>
#include <mach/hardware.h>
#include <asm/irq.h>
#include <asm/mach-types.h>
#include <asm/setup.h>
#include <asm/mach/arch.h>
#include <asm/mach/flash.h>
#include <asm/mach/irq.h>
#include <asm/mach/map.h>
#include <asm/mach/time.h>




//запись символа в юарт0
static void putc(int c)
{
        int timeout=4000;

        if (UART0_STATUS1 & 0x1E) return;
        while (timeout > 0) {
                if ((UART0_STATUS2 & 0x10) && ((UART0_STATUS3 & 4) == 0)) {
                        UART0_DATA = c;
                        break;
                }
                timeout--;
        }
}

// функция printk в  ЮАРТ
static void sanoprintk(struct console *co, const char *s, u_int count){
    int i;
        /* Пишем каждый символ */
        for (i = 0; i < count; i++, s++) {
                if (*s == '\n'){
                        putc('\r');
                }
                putc(*s);
        }
}


static int __init sano_console_setup(struct console *co, char *options)
{
        return 0;
}


/* Заполняем структуру консоли */

static struct console sano_uart_console = {
            .name   = "ttyS",                /* Имя консоли */
            .write  = sanoprintk, /* Как делать printk в консоли */
//          .device = uart_console_device,    /* Предоставлена ядром serial */
            .setup  = sano_console_setup,
            .flags  = CON_PRINTBUFFER,        /* Флаг по умолчанию */
            .index  = -1,                     /* Инициализация в неправильное значение */
};
//register_console(&sano_uart_console);


/* Инициализация консоли */

static int __init sano_uart_console_init(void)
{
/* Регистрация этой консоли */
register_console(&sano_uart_console);
return 0;
}

console_initcall(sano_uart_console_init); /* Метка инициализации консоли */

В Makefile arch части добавил obj-y += serial.o, ядро собирается и драйвер в его добавляется, но вывод сообщений в ЮАРТ не происходит.

Однако если я в файде /init/main.c добавляю свою функцию sanoprintk , а так же заполняю и инициализирую структуру static struct console sano_uart_console прямо в начале функции start_kernel, то вывод в юарт работает так как надо. Выглядит это примерно так

#ifdef STANDALONE_DEBUG
#define putstr printf
#else

static void sanoprintk(struct console *co, const char *s, u_int count);

#include <mach/uncompress.h>
#endif

static void sanoprintk(struct console *co, const char *s, u_int count){
    int i;
        /* Пишем каждый символ */
        for (i = 0; i < count; i++, s++) {
                if (*s == '\n'){
                        putc('\r');
                }
                putc(*s);
        }
}

asmlinkage void __init start_kernel(void)
{
/* Параметры каждого из поддерживаемых портов USB_UART */
        /* Заполняем структуру консоли */

static struct console sano_uart_console = {
          .name   = "ttyS",                /* Имя консоли */
          .write  = sanoprintk, /* Как делать printk в консоли */
          .flags  = CON_PRINTBUFFER,        /* Флаг по умолчанию */
          .index  = -1,                     /* Инициализация в неправильное значение */
};
register_console(&sano_uart_console);

Однако, это крайне не верное решение. Подскажите пожалуйста как подключить драйвер вынесенный в отдельный файл arch части ядра.

Sanoend
()

Взбесился cron

Здравствуйте, уважаемые

С кроном какой-то шайтан, а может я на старости лет ебанулся

Вот запись:

0 1 2-31 * 6 /скриптец

Я жду, что он будет выполнятся раз в неделю (в час ночи, со 2 по 31-е число)

Хер там! исполняется КАЖДЫЙ ДЕНЬ что за херня? у меня уже кроме мата слов не осталось.

Alphaer
()

Гостевая книга - поиск уязвимостей

Пишу для домашней странички простейшую гостевую книгу на языке PHP. Возникли дополнительные вопросы, прошу помощи.

Сообщения посетителей с указанием e-mail сохраняются в текстовом файле, который находится за пределами папки «DocumentRoot» веб-сервера.
Перед сохранением сообщения в файл скрипт производит замену символов:

  • символ «&» заменяет командой «& a m p ;»
  • «<» заменяет кодом «& l t ;»
  • «>» заменяет «& g t ;»
  • символы перевода строки «\r», «\n» заменяет тегом «<br>», т.к. переводы строки отделяют друг от друга записи в файле
  • символ «|» заменяет кодом «& # 124 ;», т.к. вертикальная черточка используется в качестве разделителя полей в составе записи

Список недочетов гостевой книги, в том числе, в плане защищенности:

  • не реализована защита от приема повторно направленных данных, т.е. нафлудить можно нажатием «F5» в браузере :)
  • не осуществляется проверка правильности указания e-mail на основе шаблона «user@sub.domain», в составе имени посетителя можно указывать любые символы
  • скрипт не проверяет переменную «REFERER», т.е. будет принимать данные формы с постороннего сайта (такая атака называется CSRF)

Возникли следующие вопросы:

  • Может ли потенциальный злоумышленник «украсть» текстовый файл, в котором хранятся сообщения посетителей с указанием e-mail'ов?
    Если может, то как предотвратить такую утечку информации?
  • Возможно ли внедрить в сообщение теги, спецсимволы HTML наподобие ©, код JavaScript, либо PHP с целью отображения у остальных посетителей, исполнения на сервере? Если возможно, то как это предотвратить? Подразумевается возможность выполнения атак «Cross-site Scripting» (XSS) и «PHP Injection».
  • Какие, по вашему мнению, еще могут быть недочеты у гостевой книги в плане защищенности от «взлома», нарушения работы?

Спасибо.

Deleted
()

Как писались 3D игрушки типа DukeNukem3D или Quake, Doom?

Приветствую, потыкайте носом, где почитать, как писались старые 3D движки типа DukeNukem3D. Не помню, где-то находил, был разбор, как такой движок устроен и были примеры кода, а сейчас вот найти не могу (

xterro
()

Наш ответ starcraft'у

игра на движке Unigine (cast binstream)

http://www.youtube.com/watch?v=xI-Ytfp3jfI&feature=plcp

Ъ: очень похоже на старкрафт2.

pashazz
()

Посоветуйте игр, резво работающих в Wine

 , ,

Хочу что-нибудь постапокалиптическое, жанр не важен, желательно, чтобы был ragdoll. Хочу запускать в Wine, ибо нативного ничего такого нет.
Новые Fallout'ы не предлагать.

CYB3R
()