Subversion Repositories Kolibri OS

Rev

Rev 2300 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2300 Rev 2301
Line 11... Line 11...
11
;;         GNU GENERAL PUBLIC LICENSE                              ;;
11
;;         GNU GENERAL PUBLIC LICENSE                              ;;
12
;;          Version 2, June 1991                                   ;;
12
;;          Version 2, June 1991                                   ;;
13
;;                                                                 ;;
13
;;                                                                 ;;
14
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
14
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Line 15... Line 15...
15
 
15
 
Line 16... Line 16...
16
$Revision: 2300 $
16
$Revision: 2301 $
Line 17... Line 17...
17
 
17
 
Line 235... Line 235...
235
;-----------------------------------------------------------------
235
;-----------------------------------------------------------------
236
;
236
;
237
; Socket API (function 74)
237
; Socket API (function 74)
238
;
238
;
239
;-----------------------------------------------------------------
239
;-----------------------------------------------------------------
-
 
240
align 16
-
 
241
sock_sysfn_table:
-
 
242
	dd	SOCKET_open	; 0
-
 
243
	dd	SOCKET_close	; 1
-
 
244
	dd	SOCKET_bind	; 2
-
 
245
	dd	SOCKET_listen	; 3
-
 
246
	dd	SOCKET_connect	; 4
-
 
247
	dd	SOCKET_accept	; 5
-
 
248
	dd	SOCKET_send	; 6
-
 
249
	dd	SOCKET_receive	; 7
-
 
250
	dd	SOCKET_set_opt	; 8
-
 
251
	dd	SOCKET_get_opt	; 9
-
 
252
 
-
 
253
SOCKET_SYSFUNCS = ($ - sock_sysfn_table)/4
-
 
254
 
-
 
255
 
240
align 4
256
align 4
241
sys_socket:
257
sys_socket:
242
	cmp	ebx, 9		; highest possible number
258
	cmp	ebx, SOCKET_SYSFUNCS-1
243
	ja	@f
259
	ja	@f
244
	jmp	dword [sock_sysfn_table + 4*ebx]
260
	jmp	dword [sock_sysfn_table + 4*ebx]
245
       @@:
261
       @@:
246
	cmp	ebx, 255
262
	cmp	ebx, 255
247
	jz	SOCKET_debug
263
	jz	SOCKET_debug
Line 250... Line 266...
250
	DEBUGF	1,"socket error\n"
266
	DEBUGF	1,"socket error\n"
251
	mov	dword [esp+32], -1
267
	mov	dword [esp+32], -1
Line 252... Line 268...
252
 
268
 
Line 253... Line 269...
253
	ret
269
	ret
254
 
-
 
255
align 4
-
 
256
sock_sysfn_table:
-
 
257
	dd	SOCKET_open	; 0
-
 
258
	dd	SOCKET_close	; 1
-
 
259
	dd	SOCKET_bind	; 2
-
 
260
	dd	SOCKET_listen	; 3
-
 
261
	dd	SOCKET_connect	; 4
-
 
262
	dd	SOCKET_accept	; 5
-
 
263
	dd	SOCKET_send	; 6
-
 
264
	dd	SOCKET_receive	; 7
-
 
Line 265... Line 270...
265
	dd	SOCKET_set_opt	; 8
270
 
266
	dd	SOCKET_get_opt	; 9
271
 
267
 
272
 
268
;-----------------------------------------------------------------
273
;-----------------------------------------------------------------
Line 393... Line 398...
393
	DEBUGF	1,"af_inet4\n"
398
	DEBUGF	1,"af_inet4\n"
Line 394... Line 399...
394
 
399
 
395
	cmp	esi, 6
400
	cmp	esi, 6
Line 396... Line 401...
396
	jb	s_error
401
	jb	s_error
397
 
402
 
Line 398... Line 403...
398
	push	word [edx + 2]
403
	pushw	[edx + 2]
399
	pop	word [eax + UDP_SOCKET.LocalPort]
404
	pop	[eax + UDP_SOCKET.LocalPort]
Line 400... Line 405...
400
 
405
 
401
	push	dword [edx + 4]
406
	pushd	[edx + 4]
402
	pop	[eax + IP_SOCKET.LocalIP]
407
	pop	[eax + IP_SOCKET.LocalIP]
Line 461... Line 466...
461
align 4
466
align 4
462
  .udp:
467
  .udp:
463
	lea	ebx, [eax + SOCKET.lock]
468
	lea	ebx, [eax + SOCKET.lock]
464
	call	wait_mutex
469
	call	wait_mutex
Line 465... Line 470...
465
 
470
 
466
	push	word [edx + 2]
471
	pushw	[edx + 2]
Line 467... Line 472...
467
	pop	[eax + UDP_SOCKET.RemotePort]
472
	pop	[eax + UDP_SOCKET.RemotePort]
468
 
473
 
Line 469... Line 474...
469
	push	dword [edx + 4]
474
	pushd	[edx + 4]
470
	pop	[eax + IP_SOCKET.RemoteIP]
475
	pop	[eax + IP_SOCKET.RemoteIP]
471
 
476
 
Line 487... Line 492...
487
align 4
492
align 4
488
  .tcp:
493
  .tcp:
489
	lea	ebx, [eax + SOCKET.lock]
494
	lea	ebx, [eax + SOCKET.lock]
490
	call	wait_mutex
495
	call	wait_mutex
Line 491... Line 496...
491
 
496
 
492
	push	word [edx + 2]
497
	pushw	[edx + 2]
Line 493... Line 498...
493
	pop	[eax + TCP_SOCKET.RemotePort]
498
	pop	[eax + TCP_SOCKET.RemotePort]
494
 
499
 
Line 495... Line 500...
495
	push	dword [edx + 4]
500
	pushd	[edx + 4]
496
	pop	[eax + IP_SOCKET.RemoteIP]
501
	pop	[eax + IP_SOCKET.RemoteIP]
497
 
502
 
Line 530... Line 535...
530
align 4
535
align 4
531
  .ip:
536
  .ip:
532
	lea	ebx, [eax + SOCKET.lock]
537
	lea	ebx, [eax + SOCKET.lock]
533
	call	wait_mutex
538
	call	wait_mutex
Line 534... Line 539...
534
 
539
 
535
	push	dword [edx + 4]
540
	pushd	[edx + 4]
Line 536... Line 541...
536
	pop	dword [eax + IP_SOCKET.RemoteIP]
541
	pop	[eax + IP_SOCKET.RemoteIP]
537
 
542
 
538
	push	eax
543
	push	eax