Subversion Repositories Kolibri OS

Rev

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

Rev 1018 Rev 1074
Line 3611... Line 3611...
3611
Remarks:
3611
Remarks:
3612
  * The memory block must have been allocated by subfunction 12
3612
  * The memory block must have been allocated by subfunction 12
3613
    or subfunction 20.
3613
    or subfunction 20.
Line 3614... Line 3614...
3614
 
3614
 
3615
======================================================================
3615
======================================================================
-
 
3616
===================== Function 68, subfunction 14 ====================
3616
======== Function 68, subfunction 14 - wait for driver notify. =======
3617
====== Waiting delivering of signal from another program/driver ======
3617
======================================================================
3618
======================================================================
3618
Parameters:
3619
Parameters:
3619
  * eax = 68 - function number
3620
  * eax = 68 - function number
3620
  * ebx = 14 - subfunction number
3621
  * ebx = 14 - subfunction number
3621
  * ecx = pointer to the buffer for information (8 bytes)
3622
  * ecx = pointer to the buffer for information (24 bytes)
3622
Returned value:
3623
Returned value:
3623
  * buffer pointed to by ecx contains the following information:
3624
  * buffer pointed to by ecx contains the following information:
3624
    * +0: dword: constant EV_INTR = 1
-
 
3625
    * +4: dword: driver data
-
 
3626
Remarks:
3625
    * +0: dword: identifier for underlying data of signal
3627
  * The current implementation at wait time uses "heavy" operations
3626
    * +4: data of signal (20 bytes), format of which is defining by
Line 3628... Line 3627...
3628
    of task switch.
3627
          first dword
3629
 
3628
 
3630
======================================================================
3629
======================================================================
3631
====== Function 68, subfunction 15 - set FPU exception handler. ======
3630
====== Function 68, subfunction 15 - set new exceptions handler ======
3632
======================================================================
3631
======================================================================
3633
Parameters:
3632
Parameters:
3634
  * eax = 68 - function number
3633
  * eax = 68 - function number
-
 
3634
  * ebx = 15 - subfunction number
3635
  * ebx = 15 - subfunction number
3635
  * ecx = address of the new exception handler
3636
  * ecx = address of the new exception handler
3636
  * edx = the mask of processing exceptions
-
 
3637
Returned value:
-
 
3638
  * eax = address of the old exception handler (0, if it was not set)
-
 
3639
  * ebx = the old mask of exception handler
-
 
3640
Remarks:
-
 
3641
  * Bit number in mask of exceptions is correspond to exception number
-
 
3642
    by CPU-specification (Intel-PC). For example, FPU-exception have
-
 
3643
    number 16 (#MF), and SSE-exception - 19 (#XF)
-
 
3644
  * The current implementation ignore the inquiry for hook of 7
-
 
3645
    exception - system process #NM by one's own.
-
 
3646
  * User handler get exception number in stack parameter. So, correct
-
 
3647
    exit from handler is: RET 4. Return from handler is to the same
-
 
3648
    instruction, that was cause the exception
-
 
3649
  * When control is transfering to user handler, corresponding bit in
-
 
3650
    exception mask is clearing. Rising this exception in consequence
-
 
3651
    - reduce to default-handling. Exactly: terminating the application,
-
 
3652
    or suspending with debug-notify to owner.
-
 
3653
  * After completion of critical operations in user handler, it may be
-
 
3654
    rising corresponding bit in exception mask by using subfunction 18
Line 3637... Line 3655...
3637
Returned value:
3655
    Clearing exceptions flags in FPU and/or XMM modules - is
3638
  * eax = address of the old exception handler (0, if it was not set)
3656
    responsibility of user handler too.
3639
 
3657
 
3640
======================================================================
3658
======================================================================
Line 3674... Line 3692...
3674
  * Function codes and the structure of input/output data
3692
  * Function codes and the structure of input/output data
3675
    are defined by driver.
3693
    are defined by driver.
3676
  * Previously one must obtain driver handle by subfunction 16.
3694
  * Previously one must obtain driver handle by subfunction 16.
Line 3677... Line 3695...
3677
 
3695
 
3678
======================================================================
3696
======================================================================
3679
====== Function 68, subfunction 18 - set SSE exception handler. ======
3697
==== Function 68, subfunction 18 - change state of signal activity ===
3680
======================================================================
3698
======================================================================
3681
Parameters:
3699
Parameters:
3682
  * eax = 68 - function number
3700
  * eax = 68 - function number
-
 
3701
  * ebx = 15 - subfunction number
3683
  * ebx = 15 - subfunction number
3702
  * ecx = signal number
3684
  * ecx = address of the new exception handler
3703
  * edx = value of activity (0/1)
3685
Returned value:
3704
Returned value:
-
 
3705
  * eax = value of old activity for this signal (0/1)
-
 
3706
Remarks:
-
 
3707
  * In current implementation, it is changed only exception mask for
-
 
3708
    user exception handler, wich was previously set by subfunction 15.
Line 3686... Line 3709...
3686
  * eax = address of the old exception handler (0, if it was not set)
3709
    At that, number of signal correspond to exception number.
3687
 
3710
 
3688
======================================================================
3711
======================================================================
3689
=============== Function 68, subfunction 19 - load DLL. ==============
3712
=============== Function 68, subfunction 19 - load DLL. ==============