|
|
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.