Rev 4850 | Rev 5356 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4850 | Rev 5155 | ||
---|---|---|---|
Line 13... | Line 13... | ||
13 | ;; GNU GENERAL PUBLIC LICENSE ;; |
13 | ;; GNU GENERAL PUBLIC LICENSE ;; |
14 | ;; Version 2, June 1991 ;; |
14 | ;; Version 2, June 1991 ;; |
15 | ;; ;; |
15 | ;; ;; |
16 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
16 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
Line 17... | Line 17... | ||
17 | 17 | ||
Line 18... | Line 18... | ||
18 | $Revision: 4850 $ |
18 | $Revision: 5155 $ |
Line 19... | Line 19... | ||
19 | 19 | ||
20 | struct SOCKET |
20 | struct SOCKET |
Line 1221... | Line 1221... | ||
1221 | mov [eax + SOCKET.device], ebx |
1221 | mov [eax + SOCKET.device], ebx |
1222 | mov [ebx + SOCKET.device], eax |
1222 | mov [ebx + SOCKET.device], eax |
Line 1223... | Line 1223... | ||
1223 | 1223 | ||
1224 | lea eax, [eax + STREAM_SOCKET.rcv] |
1224 | lea eax, [eax + STREAM_SOCKET.rcv] |
- | 1225 | call SOCKET_ring_create |
|
- | 1226 | test eax, eax |
|
Line 1225... | Line 1227... | ||
1225 | call SOCKET_ring_create |
1227 | jz .nomem1 |
1226 | 1228 | ||
1227 | lea eax, [ebx + STREAM_SOCKET.rcv] |
1229 | lea eax, [ebx + STREAM_SOCKET.rcv] |
- | 1230 | call SOCKET_ring_create |
|
Line 1228... | Line 1231... | ||
1228 | call SOCKET_ring_create |
1231 | test eax, eax |
Line 1229... | Line 1232... | ||
1229 | pop eax |
1232 | jz .nomem2 |
1230 | 1233 | ||
Line 1466... | Line 1469... | ||
1466 | ret |
1469 | ret |
Line 1467... | Line 1470... | ||
1467 | 1470 | ||
1468 | 1471 | ||
1469 | ;-------------------------- |
1472 | ;-------------------------- |
- | 1473 | ; |
|
1470 | ; |
1474 | ; IN: eax = ptr to ring struct (just a buffer of the right size) |
1471 | ; eax = ptr to ring struct (just a buffer of the right size) |
1475 | ; OUT: eax = unchanged / 0 on error |
1472 | ; |
1476 | ; |
Line 1473... | Line 1477... | ||
1473 | align 4 |
1477 | align 4 |
1474 | SOCKET_ring_create: |
1478 | SOCKET_ring_create: |
Line 1475... | Line 1479... | ||
1475 | 1479 | ||
1476 | push esi |
1480 | push esi |
1477 | mov esi, eax |
1481 | mov esi, eax |
- | 1482 | ||
- | 1483 | push edx |
|
Line 1478... | Line 1484... | ||
1478 | 1484 | stdcall create_ring_buffer, SOCKET_MAXDATA, PG_SW |
|
Line 1479... | Line 1485... | ||
1479 | push edx |
1485 | pop edx |
1480 | stdcall create_ring_buffer, SOCKET_MAXDATA, PG_SW |
1486 | test eax, eax |
Line 1494... | Line 1500... | ||
1494 | add eax, SOCKET_MAXDATA |
1500 | add eax, SOCKET_MAXDATA |
1495 | mov [esi + RING_BUFFER.end_ptr], eax |
1501 | mov [esi + RING_BUFFER.end_ptr], eax |
1496 | mov eax, esi |
1502 | mov eax, esi |
1497 | pop esi |
1503 | pop esi |
Line -... | Line 1504... | ||
- | 1504 | ||
1498 | 1505 | .fail: |
|
Line 1499... | Line 1506... | ||
1499 | ret |
1506 | ret |
1500 | 1507 | ||
1501 | ;----------------------------------------------------------------- |
1508 | ;----------------------------------------------------------------- |
Line 1537... | Line 1544... | ||
1537 | add edi, ecx |
1544 | add edi, ecx |
1538 | cmp edi, [eax + RING_BUFFER.end_ptr] |
1545 | cmp edi, [eax + RING_BUFFER.end_ptr] |
1539 | jb @f |
1546 | jb @f |
1540 | sub edi, SOCKET_MAXDATA ; WRAP |
1547 | sub edi, SOCKET_MAXDATA ; WRAP |
1541 | @@: |
1548 | @@: |
- | 1549 | ||
1542 | mov [eax + RING_BUFFER.write_ptr], edi |
1550 | mov [eax + RING_BUFFER.write_ptr], edi |
1543 | pop edi |
1551 | pop edi |
Line 1544... | Line 1552... | ||
1544 | 1552 | ||
1545 | ; update size |
1553 | ; update size |
Line 1952... | Line 1960... | ||
1952 | 1960 | ||
1953 | cmp [eax + SOCKET.Protocol], IP_PROTO_TCP |
1961 | cmp [eax + SOCKET.Protocol], IP_PROTO_TCP |
Line 1954... | Line 1962... | ||
1954 | jnz .no_tcp |
1962 | jnz .no_tcp |
- | 1963 | ||
- | 1964 | mov ebx, eax |
|
1955 | 1965 | cmp [ebx + STREAM_SOCKET.rcv.start_ptr], 0 |
|
- | 1966 | je @f |
|
- | 1967 | stdcall kernel_free, [ebx + STREAM_SOCKET.rcv.start_ptr] |
|
- | 1968 | @@: |
|
1956 | mov ebx, eax |
1969 | cmp [ebx + STREAM_SOCKET.snd.start_ptr], 0 |
- | 1970 | je @f |
|
1957 | stdcall kernel_free, [ebx + STREAM_SOCKET.rcv.start_ptr] |
1971 | stdcall kernel_free, [ebx + STREAM_SOCKET.snd.start_ptr] |
1958 | stdcall kernel_free, [ebx + STREAM_SOCKET.snd.start_ptr] |
1972 | @@: |
Line 1959... | Line 1973... | ||
1959 | mov eax, ebx |
1973 | mov eax, ebx |
1960 | .no_tcp: |
1974 | .no_tcp: |