socket_process_end

KoOS network development
  • Кста почему исходики ОС закрыты? А ещё я не пойму какая лицензия у проекта.
    Изобретайте колёса каждый раз, когда хотите написать новую программу.
  • Буду открывать по мере готовности. На данный момент открыл исходники новых программ на С (ipconfig, ping, taskmgr, wget, http-server), mx32.asm (ring3 API), и исходный код ядра kernel.asm

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

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

    А касательно работы стека да... глюков к сожалению много... например, если в Колибри используется драйвер PCNET32, 10 мин пинга и стек подвисает. В Miraculix я исправил этот баг, добавив в нужном месте в icmp.inc освобождение буфера.
  • А вы можете кинуть нам патч пожалуйста)
    Изобретайте колёса каждый раз, когда хотите написать новую программу.
  • Офигеть, кто вернулся! Миракуликс жив, нифига себе!! Спустя столько лет
    The best way to predict the future is to create it.
  • 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
    
    
  • И что? И всё?
    Из хаоса в космос
  • The function was disabled because it resulted in deadlock under certain circumstances and whole design should be re-evaluated.
    It could be that the proposed solution reduces the frequency, but I don't understand how it can resolve the issue completely.
    "Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction." Albert Einstein
  • Who is online

    Users browsing this forum: No registered users and 3 guests