added sema_down for timer_sleep