The website "dmilvdv.narod.ru." is not registered with uCoz.
If you are absolutely sure your website must be here,
please contact our Support Team.
If you were searching for something on the Internet and ended up here, try again:

About uCoz web-service

Community

Legal information

Распечатка 10.1 Загрузчик bFLT

Распечатка 10.1 Загрузчик bFLT

Предыдущая  Содержание  Следующая V*D*V

Распечатка 10.1

 

  …

if ((flags & (FLAT_FLAG_RAM|FLAT_FLAG_GZIP)) == 0) {

 

  …

 

/*

 * Случай отображения в ПЗУ: отображаем из файла для XIP

 */

textpos = do_mmap(bprm->file, 0, text_len, PROT_READ|PROT_EXEC,

                                                        0, 0);

 

  …

 

/*

 * Выделяем память для разделов данных, стека и данных переадресации.

 * Отметим, что это делается также для общих библиотек

 */

realdatastart = do_mmap(0, 0, data_len + extra +

                        MAX_SHARED_LIBS * sizeof(unsigned long),

                        PROT_READ|PROT_WRITE|PROT_EXEC, 0, 0);

 

  …

  …

 

/*

 * Читаем секцию .data из файла в память, распаковываем,

 * если необходимо

 */

#ifdef CONFIG_BINFMT_ZFLAT

if (flags & FLAT_FLAG_GZDATA) {

  result = decompress_exec(bprm, fpos, (char *) datapos,

               data_len + (relocs * sizeof(unsigned long)), 0);

}else

#endif

{

result = bprm->file->f_op->read(bprm->file, (char *) datapos,

               data_len + (relocs * sizeof(unsigned long)), &fpos);

}

 

  …

  …

 

} else {

/*

 * Случай отображений в RAM: Выделение памяти для всего

 * (текста, данных, стека, данных переадресации)

 */

textpos = do_mmap(0, 0, text_len + data_len + extra +

                  MAX_SHARED_LIBS * sizeof(unsigned long),

                  PROT_READ | PROT_EXEC | PROT_WRITE, 0, 0);

 

  …

  …

 

/*

 * Читаем разделы .text, .data из файла в ОЗУ, распаковываем,

 * если необходимо

 */

if (flags & FLAT_FLAG_GZIP) {

  result = decompress_exec(bprm, sizeof (struct flat_hdr),

           (((char *) textpos) + sizeof (struct flat_hdr)),

           (text_len + data_len + (relocs * sizeof(unsigned long))

           - sizeof (struct flat_hdr)), 0);

  …

result = bprm->file->f_op->read(bprm->file, (char *) textpos,

                                text_len, &fpos);

  …

 

Предыдущая  Содержание  Следующая