Board.KolibriOS.org

Official KolibriOS board
It is currently Sun Apr 05, 2020 6:08 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 1138 posts ]  Go to page Previous 160 61 62 63 6476 Next
Author Message
PostPosted: Tue Nov 12, 2013 1:46 am 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5107
Заменил
Code:
    mov     eax, 68
    mov     ebx, 12
    mov     ecx, [fsize]
    int     0x40         ;  -> allocate memory for file
    mov     [fptr], eax       ;  -> eax = pointer to allocated mem

    mov     eax, 70
    mov     ebx, file_info
    mov     dword[ebx],0
    int     0x40         ; -> read file

    mov     [fsize],ebx

на

Code:
   mov     eax, 68
   mov     ebx, 27
   mov     ecx, [file_name]
   int     0x40
   mov     [fsize],ebx

В итоге, не работает. Что я делаю не так? Нужна инициализация кучи и malloc для 68.12 ?

_________________
Через тернии к звездам


Top
   
PostPosted: Tue Nov 12, 2013 1:52 am 
Offline
User avatar

Joined: Mon Nov 19, 2012 5:22 pm
Posts: 458
А в [file_name] хранится указатель на начало строки с именем? Или это первый байт имени?

_________________
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!


Top
   
PostPosted: Tue Nov 12, 2013 2:23 am 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Quote:
Возвращаемое значение:
* eax = указатель на загруженный файл или 0
* edx = размер загруженного файла или 0

Leency wrote:
Код:
mov eax, 68
mov ebx, 27
mov ecx, [file_name]
int 0x40
mov [fsize],ebx


Top
   
PostPosted: Tue Nov 12, 2013 10:37 am 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5107
Spoiler: Show
Image

Спасибо.

_________________
Через тернии к звездам


Top
   
PostPosted: Tue Nov 12, 2013 2:15 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1621
Leency wrote:
Кто-то может объяснить, что делает эта функция? Чем она отличается от "70.0 - чтение файла с поддержкой длинных имён"? Тем, что во время загрузки файла может его распаковать?

Это костыль от Serge под загрузку PE из user-mode. При использовании он блокирует любые параллельные распаковки в ядре - в частности, блокирует запуск упакованных программ. Не нужно его использовать.

_________________
Сделаем мир лучше!


Top
   
PostPosted: Tue Nov 12, 2013 2:27 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5107
>> в частности, блокирует запуск упакованных программ.
Нужно пофиксить.

На данный момент распаковка длится милисекунды. Сама идея функции очень хороша. Можно basekus.kla и *.3ds в дистре держать упакованными.

_________________
Через тернии к звездам


Top
   
PostPosted: Tue Nov 12, 2013 2:47 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1621
Leency wrote:
>> в частности, блокирует запуск упакованных программ.
Нужно пофиксить.

На данный момент распаковка длится милисекунды. Сама идея функции очень хороша. Можно basekus.kla и *.3ds в дистре держать упакованными.

Нет. Нужно не пихать в ядро то, что можно сделать в библиотеке. И не использовать подобные функции, если их туда всё же запихнули. Файлы и так можно держать упакованными, код программ в любом случае потребуется менять.

_________________
Сделаем мир лучше!


Top
   
PostPosted: Fri Nov 15, 2013 9:24 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
CleverMouse wrote:
Это костыль от Serge под загрузку PE из user-mode. При использовании он блокирует любые параллельные распаковки в ядре - в частности, блокирует запуск упакованных программ. Не нужно его использовать.
Это даже не серьёзно. Никаких параллельных распаковок в ядре нет, код распаковщика блокируется мьютексом. Продолжительность блокировки равна продолжительности распаковки. load_file_umode калька с load_file. С таким же основанием можно жаловаться на то, что запуск одной упакованной программы или драйвера или загрузка библиотеки блокирут запуск других упакованных программ драйверов и библиотек.

CleverMouse wrote:
Нет. Нужно не пихать в ядро то, что можно сделать в библиотеке. И не использовать подобные функции, если их туда всё же запихнули. Файлы и так можно держать упакованными, код программ в любом случае потребуется менять.
Это не костыль под загрузку PE из user-mode. Функциональность - загрузка файлов с распаковкой есть в ядре уже 7 лет. Зачем от неё отказываться ? Если следовать этой логике, надо вернуться с самораспаковывающимся приложениям ?


Top
   
PostPosted: Fri Nov 15, 2013 10:11 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Вот здесь http://websvn.kolibrios.org/filedetails ... c&peg=4181 есть такие строки:
Code:
        add     ax, 23  ; mouse cursor Y size
; ......................................
        add     ax, 15  ; mouse cursor X size
Откуда эти значения?


Top
   
PostPosted: Sat Nov 16, 2013 12:02 am 
Offline

Joined: Tue Oct 05, 2010 6:05 pm
Posts: 216
Похоже на живущий в ...\svn\kolibri\kernel\trunk\gui\mousepointer.inc курсор размером 16х24 без единичек.


Attachments:
mousepointer.gif
mousepointer.gif [ 686 Bytes | Viewed 2167 times ]
Top
   
PostPosted: Wed Nov 20, 2013 8:19 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Serge wrote:
Цитата:
Тогда остается предположение, что количество порожденных потоков на родительский поток величина конечная
Таких ограничений нет.
Я попробовал выводить на Board идентификаторы. Получаются разные значения.
Spoiler: Show
Image
Spoiler: Show
Image

Такой был код:
Spoiler: Show
Code:
ORG 0
BITS 32
; --------------------------- ;
MENUET01       db 'MENUET01'
version        dd 1
program.start  dd START
program.end    dd END
program.memory dd END
program.stack  dd END
program.params dd 0
program.path   dd 0
; --------------------------- ;
START:
        mov    eax, 51
        mov    ebx, 1
        mov    ecx, THREAD
        xor    edx, edx
        int    64
        mov    edx, eax ; save in edx id
; --------------------------- ;
        mov    edi,  buffer
        mov    eax, "    "
        stosd
        stosd
        stosw
        xor    al, al
        stosb
        dec    edi
        dec    edi
        mov    ecx, 10
        mov    eax, edx ; edx = id
.int2str:
        xor    edx, edx
        div    ecx
        add    edx, 48
        mov    [edi], dl
        dec    edi
        test   eax, eax
        jnz    .int2str
; debug.print.line:
        mov    eax, 63
        mov    ebx, 1
        xor    ecx, ecx
        mov    esi, buffer
.next:
        mov    cl, [esi]
        jcxz   .done
        int    64
        inc    esi
        jmp    .next
.done:
        mov    cl, 13
        int    64
        mov    cl, 10
        int    64
; --------------------------- ;
        jmp    START
THREAD:
        or     eax, -1
        int    64
; --------------------------- ;
buffer: resb 11
END:

Во всех случаях прекращает работать мышь, а клавиатура иногда остаётся работать.
После вылета в окне CPU продолжается отрисовка, оставшиеся потоки так и не завершаются, cpu-usage у них 0.

Вот здесь вывод Board при запуске прошлого примера отличается(здесь вылет в kernel, а не application):
Spoiler: Show
Image


Top
   
PostPosted: Thu Nov 21, 2013 4:29 pm 
Offline
User avatar

Joined: Sat Oct 05, 2013 9:32 pm
Posts: 386
Где в ядре находится цикл, который отправляет окнам событие 1?


Top
   
PostPosted: Sun Dec 15, 2013 11:40 pm 
Offline

Joined: Sun Dec 15, 2013 11:19 pm
Posts: 2
Здравствуйте. Может кто-то расказать об рисовании GUI ?
- Где почитать?
- Как рисовать?
- Стандарты, где почитать?
- Система сигналов и обработчиков(или как гуи связать с кодом)
Буду очень благодарен за помощь.
ПС в гугле не забанили, но ничего толкового не нашел. а систему - не осилил.


Top
   
PostPosted: Sun Dec 15, 2013 11:44 pm 
Offline

Joined: Wed May 18, 2005 7:27 pm
Posts: 1001
Во-первых, посмотрите исходники уже готовых программ http://websvn.kolibrios.org/listing.php ... Kolibri+OS
Во-вторых, на каком языке собираетесь писать?


Top
   
PostPosted: Mon Dec 16, 2013 7:32 pm 
Offline

Joined: Sun Dec 15, 2013 11:19 pm
Posts: 2
Wildwest wrote:
Во-первых, посмотрите исходники уже готовых программ http://websvn.kolibrios.org/listing.php ... Kolibri+OS
Во-вторых, на каком языке собираетесь писать?

писать собираюсь на плюсах. Хочу сделать маленькое подтверждение или опровержение своей идеи. Идея состоит в концептуальной возможности использования интерпретатора html-подобного языка для построения интерфейсов
ПС. О qt слышал, это немного не то.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 1138 posts ]  Go to page Previous 160 61 62 63 6476 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Limited