2008-06-11 16:50:36 -04:00
/*
* Copyright ( C ) 2007 Oracle . All rights reserved .
2014-02-28 10:46:03 +08:00
* Copyright ( C ) 2014 Fujitsu . All rights reserved .
2008-06-11 16:50:36 -04:00
*
* This program is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public
* License v2 as published by the Free Software Foundation .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the GNU
* General Public License for more details .
*
* You should have received a copy of the GNU General Public
* License along with this program ; if not , write to the
* Free Software Foundation , Inc . , 59 Temple Place - Suite 330 ,
* Boston , MA 021110 - 1307 , USA .
*/
# ifndef __BTRFS_ASYNC_THREAD_
# define __BTRFS_ASYNC_THREAD_
2014-02-28 10:46:19 +08:00
struct btrfs_workqueue ;
2014-02-28 10:46:04 +08:00
/* Internal use only */
2014-02-28 10:46:19 +08:00
struct __btrfs_workqueue ;
2014-03-06 04:19:50 +00:00
struct btrfs_work ;
typedef void ( * btrfs_func_t ) ( struct btrfs_work * arg ) ;
2014-02-28 10:46:03 +08:00
2014-02-28 10:46:19 +08:00
struct btrfs_work {
2014-03-06 04:19:50 +00:00
btrfs_func_t func ;
btrfs_func_t ordered_func ;
btrfs_func_t ordered_free ;
2014-02-28 10:46:03 +08:00
/* Don't touch things below */
struct work_struct normal_work ;
struct list_head ordered_list ;
2014-02-28 10:46:19 +08:00
struct __btrfs_workqueue * wq ;
2014-02-28 10:46:03 +08:00
unsigned long flags ;
} ;
2014-03-12 08:05:33 +00:00
struct btrfs_workqueue * btrfs_alloc_workqueue ( const char * name ,
2014-03-06 04:19:50 +00:00
int flags ,
int max_active ,
int thresh ) ;
2014-02-28 10:46:19 +08:00
void btrfs_init_work ( struct btrfs_work * work ,
2014-03-06 04:19:50 +00:00
btrfs_func_t func ,
btrfs_func_t ordered_func ,
btrfs_func_t ordered_free ) ;
2014-02-28 10:46:19 +08:00
void btrfs_queue_work ( struct btrfs_workqueue * wq ,
struct btrfs_work * work ) ;
void btrfs_destroy_workqueue ( struct btrfs_workqueue * wq ) ;
void btrfs_workqueue_set_max ( struct btrfs_workqueue * wq , int max ) ;
void btrfs_set_work_high_priority ( struct btrfs_work * work ) ;
2008-06-11 16:50:36 -04:00
# endif