Lines Matching full:daemon

31 	struct ecryptfs_daemon *daemon = file->private_data;  in ecryptfs_miscdev_poll()  local
34 mutex_lock(&daemon->mux); in ecryptfs_miscdev_poll()
35 if (daemon->flags & ECRYPTFS_DAEMON_ZOMBIE) { in ecryptfs_miscdev_poll()
37 "daemon\n", __func__); in ecryptfs_miscdev_poll()
40 if (daemon->flags & ECRYPTFS_DAEMON_IN_READ) in ecryptfs_miscdev_poll()
42 if (daemon->flags & ECRYPTFS_DAEMON_IN_POLL) in ecryptfs_miscdev_poll()
44 daemon->flags |= ECRYPTFS_DAEMON_IN_POLL; in ecryptfs_miscdev_poll()
45 mutex_unlock(&daemon->mux); in ecryptfs_miscdev_poll()
46 poll_wait(file, &daemon->wait, pt); in ecryptfs_miscdev_poll()
47 mutex_lock(&daemon->mux); in ecryptfs_miscdev_poll()
48 if (!list_empty(&daemon->msg_ctx_out_queue)) in ecryptfs_miscdev_poll()
51 daemon->flags &= ~ECRYPTFS_DAEMON_IN_POLL; in ecryptfs_miscdev_poll()
52 mutex_unlock(&daemon->mux); in ecryptfs_miscdev_poll()
66 struct ecryptfs_daemon *daemon = NULL; in ecryptfs_miscdev_open() local
70 rc = ecryptfs_find_daemon_by_euid(&daemon); in ecryptfs_miscdev_open()
75 rc = ecryptfs_spawn_daemon(&daemon, file); in ecryptfs_miscdev_open()
77 printk(KERN_ERR "%s: Error attempting to spawn daemon; " in ecryptfs_miscdev_open()
81 mutex_lock(&daemon->mux); in ecryptfs_miscdev_open()
82 if (daemon->flags & ECRYPTFS_DAEMON_MISCDEV_OPEN) { in ecryptfs_miscdev_open()
86 daemon->flags |= ECRYPTFS_DAEMON_MISCDEV_OPEN; in ecryptfs_miscdev_open()
87 file->private_data = daemon; in ecryptfs_miscdev_open()
90 mutex_unlock(&daemon->mux); in ecryptfs_miscdev_open()
101 * This keeps the daemon registered until the daemon sends another
109 struct ecryptfs_daemon *daemon = file->private_data; in ecryptfs_miscdev_release() local
112 mutex_lock(&daemon->mux); in ecryptfs_miscdev_release()
113 BUG_ON(!(daemon->flags & ECRYPTFS_DAEMON_MISCDEV_OPEN)); in ecryptfs_miscdev_release()
114 daemon->flags &= ~ECRYPTFS_DAEMON_MISCDEV_OPEN; in ecryptfs_miscdev_release()
116 mutex_unlock(&daemon->mux); in ecryptfs_miscdev_release()
119 rc = ecryptfs_exorcise_daemon(daemon); in ecryptfs_miscdev_release()
123 "shut down daemon; rc = [%d]. Please report this " in ecryptfs_miscdev_release()
132 * @data: Data to send to daemon; may be NULL
133 * @data_size: Amount of data to send to daemon
138 * @daemon: eCryptfs daemon object
148 u16 msg_flags, struct ecryptfs_daemon *daemon) in ecryptfs_send_miscdev() argument
163 list_add_tail(&msg_ctx->daemon_out_list, &daemon->msg_ctx_out_queue); in ecryptfs_send_miscdev()
166 mutex_lock(&daemon->mux); in ecryptfs_send_miscdev()
167 daemon->num_queued_msg_ctx++; in ecryptfs_send_miscdev()
168 wake_up_interruptible(&daemon->wait); in ecryptfs_send_miscdev()
169 mutex_unlock(&daemon->mux); in ecryptfs_send_miscdev()
200 * @buf: User buffer into which to copy the next message on the daemon queue
204 * Pulls the most recent message from the daemon queue, formats it for
213 struct ecryptfs_daemon *daemon = file->private_data; in ecryptfs_miscdev_read() local
221 mutex_lock(&daemon->mux); in ecryptfs_miscdev_read()
222 if (daemon->flags & ECRYPTFS_DAEMON_ZOMBIE) { in ecryptfs_miscdev_read()
225 "daemon\n", __func__); in ecryptfs_miscdev_read()
228 if (daemon->flags & ECRYPTFS_DAEMON_IN_READ) { in ecryptfs_miscdev_read()
232 /* This daemon will not go away so long as this flag is set */ in ecryptfs_miscdev_read()
233 daemon->flags |= ECRYPTFS_DAEMON_IN_READ; in ecryptfs_miscdev_read()
235 if (list_empty(&daemon->msg_ctx_out_queue)) { in ecryptfs_miscdev_read()
236 mutex_unlock(&daemon->mux); in ecryptfs_miscdev_read()
238 daemon->wait, !list_empty(&daemon->msg_ctx_out_queue)); in ecryptfs_miscdev_read()
239 mutex_lock(&daemon->mux); in ecryptfs_miscdev_read()
245 if (daemon->flags & ECRYPTFS_DAEMON_ZOMBIE) { in ecryptfs_miscdev_read()
249 if (list_empty(&daemon->msg_ctx_out_queue)) { in ecryptfs_miscdev_read()
255 msg_ctx = list_first_entry(&daemon->msg_ctx_out_queue, in ecryptfs_miscdev_read()
301 /* We do not expect a reply from the userspace daemon for any in ecryptfs_miscdev_read()
308 daemon->flags &= ~ECRYPTFS_DAEMON_IN_READ; in ecryptfs_miscdev_read()
309 mutex_unlock(&daemon->mux); in ecryptfs_miscdev_read()
314 * ecryptfs_miscdev_response - miscdevess response to message previously sent to daemon
315 * @daemon: eCryptfs daemon object
322 static int ecryptfs_miscdev_response(struct ecryptfs_daemon *daemon, char *data, in ecryptfs_miscdev_response() argument
335 rc = ecryptfs_process_response(daemon, msg, seq); in ecryptfs_miscdev_response()
344 * ecryptfs_miscdev_write - handle write to daemon miscdev handle
465 * Messages sent to the userspace daemon from the kernel are placed on
466 * a queue associated with the daemon. The next read against the
467 * miscdev handle by that daemon will return the oldest message placed
468 * on the message queue for the daemon.