|
|
1.1 ! root 1: / $Header: /usr/src/sys/ldrv/RCS/defer.s,v 1.1 88/04/04 16:40:21 src Exp $ ! 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: /usr/src/sys/ldrv/RCS/defer.s,v $ ! 15: / Revision 1.1 88/04/04 16:40:21 src ! 16: / Initial revision ! 17: / ! 18: / ! 19: //////// ! 20: ! 21: //////// ! 22: / ! 23: / void ! 24: / defer( f, a ) - defer local function from loadable driver. ! 25: / void (*f)(); ! 26: / int a; ! 27: / ! 28: / Input: f = pointer to function to be deferred. ! 29: / a = argument to be passed to function. ! 30: / ! 31: / Action: Schedule local function 'f' to be invoked with argument 'a' ! 32: / at next transition from kernel to user mode. ! 33: / ! 34: / Return: None. ! 35: / ! 36: //////// ! 37: ! 38: .globl defer_ ! 39: ! 40: defer_: push bp / defer( f, a ) ! 41: mov bp, sp / void (*f)(); ! 42: push 6(bp) / int a; ! 43: push cs / { ! 44: push 4(bp) / kcall( Kldefer, f, cs, a ); ! 45: mov ax, $Kldefer / ! 46: push ax / ! 47: call kcall_ / ! 48: mov sp, bp / ! 49: pop bp / } ! 50: ret
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.