Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 2401 → Rev 2402

/kernel/branches/net/network/icmp.inc
254,9 → 254,10
 
DEBUGF 1,"Found valid ICMP packet for socket %x\n", ebx
 
mov eax, ebx
add ebx, SOCKET.lock
call wait_mutex
pusha
lea ecx, [eax + SOCKET.mutex]
call mutex_lock
popa
 
mov esi, edx
jmp SOCKET_input
/kernel/branches/net/network/socket.inc
22,7 → 22,7
PrevPtr dd ? ; pointer to previous socket in list
Number dd ? ; socket number
 
lock dd ? ; lock mutex
mutex MUTEX
 
PID dd ? ; application process id
Domain dd ? ; INET/UNIX/..
450,8 → 450,10
 
align 4
.udp:
lea ebx, [eax + SOCKET.lock]
call wait_mutex
pusha
lea ecx, [eax + SOCKET.mutex]
call mutex_lock
popa
 
pushw [edx + 2]
pop [eax + UDP_SOCKET.RemotePort]
470,14 → 472,18
init_queue (eax + SOCKET_QUEUE_LOCATION) ; Set up data receiving queue
pop eax
 
mov [eax + SOCKET.lock], 0
lea ecx, [eax + SOCKET.mutex]
call mutex_unlock
 
mov dword [esp+32], 0
ret
 
align 4
.tcp:
lea ebx, [eax + SOCKET.lock]
call wait_mutex
pusha
lea ecx, [eax + SOCKET.mutex]
call mutex_lock
popa
 
pushw [edx + 2]
pop [eax + TCP_SOCKET.RemotePort]
509,7 → 515,10
lea eax, [ebx + STREAM_SOCKET.rcv]
call SOCKET_ring_create
 
mov [ebx + SOCKET.lock], 0
pusha
lea ecx, [ebx + SOCKET.mutex]
call mutex_unlock
popa
 
mov eax, ebx
call TCP_output
519,8 → 528,10
 
align 4
.ip:
lea ebx, [eax + SOCKET.lock]
call wait_mutex
pusha
lea ecx, [eax + SOCKET.mutex]
call mutex_lock
popa
 
pushd [edx + 4]
pop [eax + IP_SOCKET.RemoteIP]
529,7 → 540,9
init_queue (eax + SOCKET_QUEUE_LOCATION) ; Set up data receiving queue
pop eax
 
mov [eax + SOCKET.lock], 0
lea ecx, [eax + SOCKET.mutex]
call mutex_unlock
 
mov dword [esp+32], 0
ret
 
1051,12 → 1064,22
 
DEBUGF 1,"SOCKET_input: queued packet successfully\n"
add esp, sizeof.socket_queue_entry
mov [eax + SOCKET.lock], 0
 
pusha
lea ecx, [eax + SOCKET.mutex]
call mutex_unlock
popa
 
jmp SOCKET_notify_owner
 
.full:
DEBUGF 2,"SOCKET_input: socket %x is full!\n", eax
mov [eax + SOCKET.lock], 0
 
pusha
lea ecx, [eax + SOCKET.mutex]
call mutex_unlock
popa
 
call kernel_free
add esp, 8
 
1364,11 → 1387,18
 
test ebx, ebx
jz @f
add ebx, SOCKET.lock ; lock the next socket
call wait_mutex
sub ebx, SOCKET.lock
 
pusha
lea ecx, [ebx + SOCKET.mutex]
call mutex_lock
popa
 
mov [ebx + SOCKET.PrevPtr], eax
mov [ebx + SOCKET.lock], 0 ; and unlock it again
 
pusha
lea ecx, [ebx + SOCKET.mutex]
call mutex_unlock
popa
@@:
 
mov [net_sockets + SOCKET.NextPtr], eax
1398,9 → 1428,12
jz .error
 
push ebx
lea ebx, [eax + SOCKET.lock]
call wait_mutex
 
pusha
lea ecx, [eax + SOCKET.mutex]
call mutex_lock
popa
 
DEBUGF 1, "SOCKET_free: freeing socket..\n"
 
cmp [eax + SOCKET.Domain], AF_INET4
/kernel/branches/net/network/stack.inc
151,12 → 151,6
}
 
 
wait_mutex: ; stub
inc dword [ebx]
 
ret
 
 
include "queue.inc"
 
include "ethernet.inc"
/kernel/branches/net/network/tcp_input.inc
143,14 → 143,11
;----------------
; Lock the socket
 
cmp [ebx + SOCKET.lock], 0
jne .drop_not_locked ;;; HACK ! HACK ! dirty fucking HACK ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
pusha
lea ecx, [ebx + SOCKET.mutex]
call mutex_lock
popa
 
add ebx, SOCKET.lock
DEBUGF 1,"lock: %x\n", [ebx]
call wait_mutex
sub ebx, SOCKET.lock
 
DEBUGF 1,"Socket locked\n"
 
;---------------------------------------
171,7 → 168,11
 
DEBUGF 1,"Accepting new connection\n"
 
mov [ebx + SOCKET.lock], 0
pusha
lea ecx, [ebx + SOCKET.mutex]
call mutex_unlock
popa
 
push ecx edx esi edi ;;;
call SOCKET_fork
pop edi esi edx ecx
375,7 → 376,11
mov [ebx + TCP_SOCKET.timer_retransmission], 0
 
; Awaken waiting processes
mov [ebx + SOCKET.lock], 0
pusha
lea ecx, [ebx + SOCKET.mutex]
call mutex_unlock
popa
 
mov eax, ebx
call SOCKET_notify_owner
 
1465,7 → 1470,10
 
.dumpit:
 
mov [ebx + SOCKET.lock], 0
pusha
lea ecx, [ebx + SOCKET.mutex]
call mutex_unlock
popa
 
call kernel_free
add esp, 4
1490,7 → 1498,10
 
and [ebx + TCP_SOCKET.t_flags], TF_ACKNOW
 
mov [ebx + SOCKET.lock], 0
pusha
lea ecx, [ebx + SOCKET.mutex]
call mutex_unlock
popa
 
push ebx
; mov cl, TH_ACK
1516,7 → 1527,10
align 4
.drop_with_reset:
 
mov [ebx + SOCKET.lock], 0
pusha
lea ecx, [ebx + SOCKET.mutex]
call mutex_unlock
popa
 
.drop_with_reset_not_locked:
 
1568,7 → 1582,10
align 4
.drop:
 
mov [ebx + SOCKET.lock], 0
pusha
lea ecx, [ebx + SOCKET.mutex]
call mutex_unlock
popa
 
.drop_not_locked:
 
/kernel/branches/net/network/tcp_output.inc
264,7 → 264,10
 
DEBUGF 1,"No reason to send a segment\n"
 
mov [eax + SOCKET.lock], 0
pusha
lea ecx, [eax + SOCKET.mutex]
call mutex_unlock
popa
 
ret
 
511,7 → 514,10
 
; unlock socket
 
mov [eax + SOCKET.lock], 0
pusha
lea ecx, [eax + SOCKET.mutex]
call mutex_unlock
popa
 
;----------------
; Send the packet
526,7 → 532,12
add esp, ecx
pop eax
add esp, 8
mov [eax + SOCKET.lock], 0
 
pusha
lea ecx, [eax + SOCKET.mutex]
call mutex_unlock
popa
 
DEBUGF 1,"TCP_output: failed\n"
ret
 
/kernel/branches/net/network/udp.inc
178,10 → 178,10
cmp [eax + UDP_SOCKET.RemotePort], cx
jne .dump
 
push ebx
lea ebx, [eax + SOCKET.lock]
call wait_mutex
pop ebx
pusha
lea ecx, [eax + SOCKET.mutex]
call mutex_lock
popa
 
.updatesock:
inc [UDP_PACKETS_RX]
193,10 → 193,10
jmp SOCKET_input
 
.updateport:
push ebx
lea ebx, [eax + SOCKET.lock]
call wait_mutex
pop ebx
pusha
lea ecx, [eax + SOCKET.mutex]
call mutex_lock
popa
 
DEBUGF 1,"Changing remote port to: %u\n", cx
mov [eax + UDP_SOCKET.RemotePort], cx