]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blob - fs/afs/kafsasyncd.h
[AF_RXRPC]: Add an interface to the AF_RXRPC module for the AFS filesystem to use
[linux-2.6-omap-h63xx.git] / fs / afs / kafsasyncd.h
1 /* AFS asynchronous operation daemon
2  *
3  * Copyright (C) 2002 Red Hat, Inc. All Rights Reserved.
4  * Written by David Howells (dhowells@redhat.com)
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version
9  * 2 of the License, or (at your option) any later version.
10  */
11
12 #ifndef AFS_KAFSASYNCD_H
13 #define AFS_KAFSASYNCD_H
14
15 #include "types.h"
16
17 struct afs_async_op;
18
19 struct afs_async_op_ops {
20         void (*attend)(struct afs_async_op *);
21         void (*discard)(struct afs_async_op *);
22 };
23
24 /*
25  * asynchronous operation record
26  */
27 struct afs_async_op {
28         struct list_head                link;
29         struct afs_server               *server;        /* server being contacted */
30         struct rxrpc_call               *call;          /* RxRPC call performing op */
31         wait_queue_t                    waiter;         /* wait queue for kafsasyncd */
32         const struct afs_async_op_ops   *ops;           /* operations */
33 };
34
35 static inline void afs_async_op_init(struct afs_async_op *op,
36                                      const struct afs_async_op_ops *ops)
37 {
38         INIT_LIST_HEAD(&op->link);
39         op->call = NULL;
40         op->ops = ops;
41 }
42
43 extern int afs_kafsasyncd_start(void);
44 extern void afs_kafsasyncd_stop(void);
45
46 extern void afs_kafsasyncd_begin_op(struct afs_async_op *);
47 extern void afs_kafsasyncd_attend_op(struct afs_async_op *);
48 extern void afs_kafsasyncd_terminate_op(struct afs_async_op *);
49
50 #endif /* AFS_KAFSASYNCD_H */