void *journal_info;
mm_segment_t oldfs;
unsigned long force_flush = 0;
- unsigned long size;
+ unsigned long size, off, flags;
int rc;
kportal_daemonize("ldebug_daemon");
debug_daemon_state.overlapped = 0;
debug_daemon_state.stopped = 0;
+
+ spin_lock_irqsave(&portals_debug_lock, flags);
+ off = atomic_read(&debug_off_a) + 1;
+ if (debug_wrapped)
+ off = (off >= debug_size)? 0 : off;
+ else
+ off = 0;
+ atomic_set(&debug_daemon_next_write, off);
atomic_set(&debug_daemon_state.paused, 0);
+ spin_unlock_irqrestore(&portals_debug_lock, flags);
+
oldfs = get_fs();
set_fs(KERNEL_DS);
while (1) {
init_waitqueue_head(&debug_daemon_state.lctl);
init_waitqueue_head(&debug_daemon_state.daemon);
- atomic_set(&debug_daemon_next_write, atomic_read(&debug_off_a));
-
daemon_file_size_limit = size << 20;
debug_daemon_state.lctl_event = 0;
void *journal_info;
mm_segment_t oldfs;
unsigned long force_flush = 0;
- unsigned long size;
+ unsigned long size, off, flags;
int rc;
kportal_daemonize("ldebug_daemon");
debug_daemon_state.overlapped = 0;
debug_daemon_state.stopped = 0;
+
+ spin_lock_irqsave(&portals_debug_lock, flags);
+ off = atomic_read(&debug_off_a) + 1;
+ if (debug_wrapped)
+ off = (off >= debug_size)? 0 : off;
+ else
+ off = 0;
+ atomic_set(&debug_daemon_next_write, off);
atomic_set(&debug_daemon_state.paused, 0);
+ spin_unlock_irqrestore(&portals_debug_lock, flags);
+
oldfs = get_fs();
set_fs(KERNEL_DS);
while (1) {
init_waitqueue_head(&debug_daemon_state.lctl);
init_waitqueue_head(&debug_daemon_state.daemon);
- atomic_set(&debug_daemon_next_write, atomic_read(&debug_off_a));
-
daemon_file_size_limit = size << 20;
debug_daemon_state.lctl_event = 0;