На главную
Подписка
Новости










Главная / MS-DOS / MS-DOS. РУКОВОДСТВО РАЗРАБОТЧИКА / Глава 7 / Листинг 7-3. EMMTYPES.H Сделать домашней страницей Добавить в избранное Написать писмо

НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Листинг 7-3. EMMTYPES.H

                             Листинг 7-3. EMMTYPES.H
        ------------------------------------------------------------------
        /*
        Структуры, используемые для связи с менеджером расширенной памяти
        */

        #define PCONTEXT            unsigned char
        #define PMAP                unsigned char

        typedef struct handle_page { /*структура  страницы  обработчика*/
                unsigned int emm_handle; /*размещенный обработчик
                                      менеджера расширенной памяти*/
                unsigned int pages_alloc_to_handle; /*логические страницы
                                               принадлежащие обработчику*/
        } HANDLE_PAGE;

        typedef struct ppmap { /*структура запроса частичного контекста*/
                unsigned int seg_cnt; /*количество отображаемых сег-
                                     ментов, которое требуется получить*/
                unsigned int seg_addr[PAGE_FRAMES];  /*адрес отображае-
                              мого сегмента, который требуется получить*/
        } PPMAP;


        typedef struct  log_to_phys  { /*структура отображения логических
                                                 на физические страницы*/

                unsigned int log_page_no;  /*номер логической  страницы*/
                unsigned int phys_page_no; /*номер кадра страниц/адрес
                                                  отображаемого сегмента*/
        } LOG_TO_PHYS;

        typedef struct handle_names { /*элемент массива имен обработчика*/
                   unsigned int   handle_value;   /*обработчик*/
                    char handle_name[HANDLE_NAME_LENGTH]; /*имя, связанное
                                                           с обработчиком*/
        } HANDLE_NAMES;

        typedef struct  map_phys_page  { /*отображение отображаемого сег-
                                         мента в номер физическ. страницы
                                         */
                unsigned int phys_page_segment;  /*адрес  сегмента  физи-
                                                                 ческ.
                                                                 страни-
                                                                 цы*/
                unsigned int phys_page_number; /*номер физическ. страницы*/
        } MAP_PHYS_PAGE;

        typedef struct  hardware_info  { /*структура данных об аппаратуре
                                          спецификации расширенной памяти
                                          */
              unsigned int raw_page_size; /*кол-во байт в исх. странице*/
              unsigned int alt_reg_sets; /*кол-во альтернативных на-
                                          боров регистров отображения*/
                 unsigned int ctx_savearea_size;  /*кол-во байт в области
                                                    сохранения контекста*/
                 unsigned int dma_reg_sets;  /*кол-во  наборов  рег-ров
                                                ПДП*/
                 unsigned  int  dma_chan_op;  /*0:  работа  ПДП по
                                                станд. LIM,
                                                1: только один канал ПДП*/
        } HARDWARE_INFO;

        #define CONV_MEM           0        /*обычная память*/
        #define EXP_MEM            1        /*расширенная память*/

        typedef struct mregn { /*дескриптор области памяти*/

          unsigned char memory_type;       /*CONV_MEM / EXP_MEM*/

          unsignedint handle;       /*CONV_MEM: 0, EXP_MEM: обработчик*/

          unsigned int inutial_offset; /*CONV_MEM: 0 -65535,
                                        EXP_MEM:  0  -   16383*/
          unsigned int initial_seg_page;  /*CONV_MEM: адрес сегмента,
                                            EXP_MEM: номер страницы*/
        } MREGN;

        typedef struct move_xchg { /*структура  передвижки/обмена*/
           long region_length;    /*0 - 1 Мбайт*/
           MREGN source;          /*дискриптор области-источника*/
           MREGN dest;            /*дескриптор области -приемника*/
        } MOVE_XCHG;
        -------------------------------------------------------------------

НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Hosted by uCoz