Rev 3861 | Rev 4020 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3861 | Rev 3884 | ||
---|---|---|---|
Line 2049... | Line 2049... | ||
2049 | ;---------------------------------------------------- |
2049 | ;---------------------------------------------------- |
2050 | ; |
2050 | ; |
2051 | ; SOCKET_free |
2051 | ; SOCKET_free |
2052 | ; |
2052 | ; |
2053 | ; Free socket data memory and remove socket from the list |
2053 | ; Free socket data memory and remove socket from the list |
- | 2054 | ; Caller should lock and unlock socket_mutex |
|
2054 | ; |
2055 | ; |
2055 | ; IN: eax = socket ptr |
2056 | ; IN: eax = socket ptr |
2056 | ; OUT: / |
2057 | ; OUT: / |
2057 | ; |
2058 | ; |
2058 | ;---------------------------------------------------- |
2059 | ;---------------------------------------------------- |
2059 | align 4 |
2060 | align 4 |
2060 | SOCKET_free: |
2061 | SOCKET_free: |
Line 2061... | Line 2062... | ||
2061 | 2062 | ||
Line 2062... | Line -... | ||
2062 | DEBUGF DEBUG_NETWORK_VERBOSE, "SOCKET_free: %x\n", eax |
- | |
2063 | - | ||
2064 | pusha |
- | |
2065 | mov ecx, socket_mutex |
- | |
2066 | call mutex_lock |
- | |
2067 | popa |
2063 | DEBUGF DEBUG_NETWORK_VERBOSE, "SOCKET_free: %x\n", eax |
2068 | 2064 | ||
Line 2069... | Line 2065... | ||
2069 | call SOCKET_check |
2065 | call SOCKET_check |
Line 2109... | Line 2105... | ||
2109 | pop ebx |
2105 | pop ebx |
Line 2110... | Line 2106... | ||
2110 | 2106 | ||
Line 2111... | Line 2107... | ||
2111 | DEBUGF DEBUG_NETWORK_VERBOSE, "SOCKET_free: success!\n" |
2107 | DEBUGF DEBUG_NETWORK_VERBOSE, "SOCKET_free: success!\n" |
2112 | - | ||
2113 | .error: |
- | |
2114 | - | ||
2115 | pusha |
- | |
2116 | mov ecx, socket_mutex |
- | |
2117 | call mutex_unlock |
- | |
2118 | popa |
2108 | |
Line 2119... | Line 2109... | ||
2119 | 2109 | .error: |
|
2120 | ret |
2110 | ret |
2121 | 2111 | ||
Line 2329... | Line 2319... | ||
2329 | ; |
2319 | ; |
2330 | ;------------------------------------------------------ |
2320 | ;------------------------------------------------------ |
2331 | align 4 |
2321 | align 4 |
2332 | SOCKET_process_end: |
2322 | SOCKET_process_end: |
Line 2333... | Line -... | ||
2333 | - | ||
2334 | pushf |
- | |
2335 | cli ; FIXME |
- | |
2336 | 2323 | ||
Line 2337... | Line 2324... | ||
2337 | DEBUGF DEBUG_NETWORK_VERBOSE, "SOCKET_process_end: %x\n", edx |
2324 | DEBUGF DEBUG_NETWORK_VERBOSE, "SOCKET_process_end: %x\n", edx |
2338 | 2325 | ||
2339 | pusha |
2326 | pusha |
Line 2358... | Line 2345... | ||
2358 | mov [ebx + SOCKET.PID], 0 |
2345 | mov [ebx + SOCKET.PID], 0 |
2359 | mov eax, ebx |
2346 | mov eax, ebx |
2360 | mov ebx, [ebx + SOCKET.NextPtr] |
2347 | mov ebx, [ebx + SOCKET.NextPtr] |
Line 2361... | Line 2348... | ||
2361 | 2348 | ||
2362 | pusha |
- | |
2363 | mov ecx, socket_mutex |
- | |
2364 | call mutex_unlock |
- | |
2365 | popa |
- | |
2366 | - | ||
2367 | pusha |
2349 | pusha |
2368 | cmp [eax + SOCKET.Domain], AF_INET4 |
2350 | cmp [eax + SOCKET.Domain], AF_INET4 |
Line 2369... | Line 2351... | ||
2369 | jne .free |
2351 | jne .free |
2370 | 2352 | ||
Line 2377... | Line 2359... | ||
2377 | .free: |
2359 | .free: |
2378 | call SOCKET_free |
2360 | call SOCKET_free |
Line 2379... | Line 2361... | ||
2379 | 2361 | ||
2380 | .closed: |
2362 | .closed: |
2381 | popa |
- | |
2382 | - | ||
2383 | pusha |
- | |
2384 | mov ecx, socket_mutex |
- | |
2385 | call mutex_lock |
- | |
2386 | popa |
- | |
2387 | 2363 | popa |
|
Line 2388... | Line 2364... | ||
2388 | jmp .next_socket_test |
2364 | jmp .next_socket_test |
2389 | 2365 | ||
Line 2390... | Line 2366... | ||
2390 | .done: |
2366 | .done: |
2391 | pop ebx |
2367 | pop ebx |
2392 | 2368 | ||
2393 | pusha |
2369 | pusha |
Line 2394... | Line -... | ||
2394 | mov ecx, socket_mutex |
- | |
2395 | call mutex_unlock |
- | |
2396 | popa |
2370 | mov ecx, socket_mutex |