socket_process_end

KoOS network development
Post Reply
Kreoton
Posts: 4
Joined: Wed Sep 14, 2022 10:03 pm

socket_process_end

Post by Kreoton »

В процессе портирования сетевой подсистемы в Miraculix OS, возникло пару вопросов.

Почему не используется процедура закрытия сокетов, при завершении процесса - socket_process_end?

Кроме того, обратил внимание, что поиск номера свободного сокета в socket_alloc, идет не с начала, а начиная с последнего.
User avatar
turbocat
Posts: 185
Joined: Thu Jun 25, 2020 1:14 am
Has thanked: 1 time
Been thanked: 5 times

Re: socket_process_end

Post by turbocat »

Кста почему исходики ОС закрыты? А ещё я не пойму какая лицензия у проекта.
Изобретайте колёса каждый раз, когда хотите написать новую программу.
Kreoton
Posts: 4
Joined: Wed Sep 14, 2022 10:03 pm

Re: socket_process_end

Post by Kreoton »

Буду открывать по мере готовности. На данный момент открыл исходники новых программ на С (ipconfig, ping, taskmgr, wget, http-server), mx32.asm (ring3 API), и исходный код ядра kernel.asm

Выложил на свой сайт и на github

На счет лицензии еще подумаю.
User avatar
turbocat
Posts: 185
Joined: Thu Jun 25, 2020 1:14 am
Has thanked: 1 time
Been thanked: 5 times

Re: socket_process_end

Post by turbocat »

Касательно сетевого стека сказать не могу. Он не полностью реализован. Да и работает тоже не очень. Вы не думали портировать lwIP к себе?
Изобретайте колёса каждый раз, когда хотите написать новую программу.
Kreoton
Posts: 4
Joined: Wed Sep 14, 2022 10:03 pm

Re: socket_process_end

Post by Kreoton »

Я подумал проще портировать стек из KolibriOS, т.к тоже на FASM'e. На счет lwIP надо подумать.. В принципе, его можно дорабатывть по мере необходимости. Критичный для меня функционал я уже доработал.
И считаю, что его уже достаточно для создания сетевых приложений, например - мессенджера.

А касательно работы стека да... глюков к сожалению много... например, если в Колибри используется драйвер PCNET32, 10 мин пинга и стек подвисает. В Miraculix я исправил этот баг, добавив в нужном месте в icmp.inc освобождение буфера.
User avatar
turbocat
Posts: 185
Joined: Thu Jun 25, 2020 1:14 am
Has thanked: 1 time
Been thanked: 5 times

Re: socket_process_end

Post by turbocat »

А вы можете кинуть нам патч пожалуйста)
Изобретайте колёса каждый раз, когда хотите написать новую программу.
User avatar
rgimad
Posts: 164
Joined: Mon Apr 06, 2020 1:09 pm
Has thanked: 7 times
Been thanked: 1 time

Re: socket_process_end

Post by rgimad »

Офигеть, кто вернулся! Миракуликс жив, нифига себе!! Спустя столько лет
The best way to predict the future is to create it.
Kreoton
Posts: 4
Joined: Wed Sep 14, 2022 10:03 pm

Re: socket_process_end

Post by Kreoton »

turbocat wrote: Thu Sep 15, 2022 11:50 am А вы можете кинуть нам патч пожалуйста)
Изменить в socket.inc, для того, чтобы отсчет пошел сначала.

Code: Select all

; в socket_alloc
mov     edi, [last_socket_num]  
; заменить на
mov     edi, 0
Закрытие сокетов при завершении процесса:

Code: Select all


;
;  Добавил в stack_init пепехват завершения процесса или потока. Таким же способом будут закрываться файлы и соединения Bluetooth.
;
	mov	eax, socket_process_end
	call	[HookTaskKill]
	

; добавить в socket.inc

; IN  : EDX - Closing PID
socket_process_end:
	pusha
	pushf
	cli
  .socket_close_PID_start:
        mov     ebx, net_sockets
  .next_socket:
        mov     ebx, [ebx + SOCKET.NextPtr]
        cmp     ebx, 0
        je      .last_socket

        cmp     [ebx + SOCKET.PID],edx
	je	.close_socket_handle_of_PID
        cmp     [ebx + SOCKET.TID],edx
	je	.close_socket_handle_of_PID
        jmp     .next_socket
  .close_socket_handle_of_PID:
	pusha
	mov	ecx,[ebx + SOCKET.Number]
	call	socket_close
	popa
        jmp     .socket_close_PID_start
  .last_socket:
	popf
	popa
	ret

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest