|
|
1.1 ! root 1: / $Header: /kernel/kersrc/ldrv/RCS/defer.s,v 1.1 92/07/17 15:27:49 bin Exp Locker: bin $ ! 2: / ! 3: / The information contained herein is a trade secret of INETCO ! 4: / Systems, and is confidential information. It is provided under ! 5: / a license agreement, and may be copied or disclosed only under ! 6: / the terms of that agreement. Any reproduction or disclosure of ! 7: / this material without the express written authorization of ! 8: / INETCO Systems or persuant to the license agreement is unlawful. ! 9: / ! 10: / Copyright (c) 1988 ! 11: / An unpublished work by INETCO Systems, Ltd. ! 12: / All rights reserved. ! 13: / ! 14: / $Log: defer.s,v $ ! 15: / Revision 1.1 92/07/17 15:27:49 bin ! 16: / Initial revision ! 17: ! 18: / Revision 1.1 88/04/04 16:40:21 src ! 19: / Initial revision ! 20: / ! 21: / ! 22: //////// ! 23: ! 24: //////// ! 25: / ! 26: / void ! 27: / defer( f, a ) - defer local function from loadable driver. ! 28: / void (*f)(); ! 29: / int a; ! 30: / ! 31: / Input: f = pointer to function to be deferred. ! 32: / a = argument to be passed to function. ! 33: / ! 34: / Action: Schedule local function 'f' to be invoked with argument 'a' ! 35: / at next transition from kernel to user mode. ! 36: / ! 37: / Return: None. ! 38: / ! 39: //////// ! 40: ! 41: .globl defer_ ! 42: ! 43: defer_: push bp / defer( f, a ) ! 44: mov bp, sp / void (*f)(); ! 45: push 6(bp) / int a; ! 46: push cs / { ! 47: push 4(bp) / kcall( Kldefer, f, cs, a ); ! 48: mov ax, $Kldefer / ! 49: push ax / ! 50: call kcall_ / ! 51: mov sp, bp / ! 52: pop bp / } ! 53: ret
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.