Changeset 23 for trunk/kernel/syscalls/sys_thread_sleep.c
- Timestamp:
- Jun 18, 2017, 10:06:41 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/kernel/syscalls/sys_thread_sleep.c
r1 r23 1 1 /* 2 * kern/sys_thread_sleep.c - puts the currentthread in sleep state2 * sys_thread_sleep.c - put the calling thread in sleep state 3 3 * 4 * Copyright (c) 2008,2009,2010,2011,2012 Ghassan Almaless 5 * Copyright (c) 2011,2012 UPMC Sorbonne Universites 4 * Author Alain Greiner (2016,2017) 6 5 * 7 * This file is part of ALMOS-kernel.6 * Copyright (c) UPMC Sorbonne Universites 8 7 * 9 * ALMOS-kernel is free software; you can redistribute it and/or modify it 8 * This file is part of ALMOS-MKH. 9 * 10 * ALMOS-MKH is free software; you can redistribute it and/or modify it 10 11 * under the terms of the GNU General Public License as published by 11 12 * the Free Software Foundation; version 2.0 of the License. 12 13 * 13 * ALMOS- kernelis distributed in the hope that it will be useful, but14 * ALMOS-MKH is distributed in the hope that it will be useful, but 14 15 * WITHOUT ANY WARRANTY; without even the implied warranty of 15 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU … … 17 18 * 18 19 * You should have received a copy of the GNU General Public License 19 * along with ALMOS- kernel; if not, write to the Free Software Foundation,20 * along with ALMOS-MKH; if not, write to the Free Software Foundation, 20 21 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 21 22 */ 22 23 24 #include <hal_special.h> 23 25 #include <scheduler.h> 24 26 #include <thread.h> 25 #include < task.h>27 #include <printk.h> 26 28 29 ////////////////////// 27 30 int sys_thread_sleep() 28 31 { 29 struct thread_s *this;32 thread_t * this = CURRENT_THREAD; 30 33 31 this = current_thread; 34 thread_dmsg("\n[INFO] %s : thread %x in process %x goes to sleep at cycle %d\n", 35 __FUNCTION__ , this->trdid , this->process->pid , hal_time_stamp() ); 32 36 33 if(this->info.isTraced == true) 34 { 35 printk(INFO, "%s: cpu %d, pid %d, tid %d, asked to go sleep [%d]\n", 36 __FUNCTION__, 37 cpu_get_id(), 38 this->task->pid, 39 this->info.order, 40 cpu_time_stamp()); 41 } 37 thread_block( CURRENT_THREAD , THREAD_BLOCKED_GLOBAL ); 38 sched_yield(); 42 39 43 thread_set_cap_wakeup(this); 44 sched_sleep(this); 45 46 if(this->info.isTraced == true) 47 { 48 printk(INFO, "%s: cpu %d, pid %d, tid %d, resuming [%d]\n", 49 __FUNCTION__, 50 cpu_get_id(), 51 this->task->pid, 52 this->info.order, 53 cpu_time_stamp()); 54 } 40 thread_dmsg("\n[INFO] %s : thread %x in process %x resume at cycle\n", 41 __FUNCTION__ , this->trdid , this->process->pid , hal_time_stamp() ); 55 42 56 43 return 0; 57 } 44 } // end sys_thread_sleep()
Note: See TracChangeset
for help on using the changeset viewer.