139cfddd2SFrançois Tigeot /* 21dedbd3bSFrançois Tigeot * Copyright (c) 2017-2019 François Tigeot <ftigeot@wolfpond.org> 339cfddd2SFrançois Tigeot * All rights reserved. 439cfddd2SFrançois Tigeot * 539cfddd2SFrançois Tigeot * Redistribution and use in source and binary forms, with or without 639cfddd2SFrançois Tigeot * modification, are permitted provided that the following conditions 739cfddd2SFrançois Tigeot * are met: 839cfddd2SFrançois Tigeot * 1. Redistributions of source code must retain the above copyright 939cfddd2SFrançois Tigeot * notice unmodified, this list of conditions, and the following 1039cfddd2SFrançois Tigeot * disclaimer. 1139cfddd2SFrançois Tigeot * 2. Redistributions in binary form must reproduce the above copyright 1239cfddd2SFrançois Tigeot * notice, this list of conditions and the following disclaimer in the 1339cfddd2SFrançois Tigeot * documentation and/or other materials provided with the distribution. 1439cfddd2SFrançois Tigeot * 1539cfddd2SFrançois Tigeot * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 1639cfddd2SFrançois Tigeot * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 1739cfddd2SFrançois Tigeot * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 1839cfddd2SFrançois Tigeot * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 1939cfddd2SFrançois Tigeot * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 2039cfddd2SFrançois Tigeot * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2139cfddd2SFrançois Tigeot * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2239cfddd2SFrançois Tigeot * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2339cfddd2SFrançois Tigeot * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 2439cfddd2SFrançois Tigeot * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2539cfddd2SFrançois Tigeot */ 2639cfddd2SFrançois Tigeot 2739cfddd2SFrançois Tigeot #ifndef _LINUX_KTHREAD_H_ 2839cfddd2SFrançois Tigeot #define _LINUX_KTHREAD_H_ 2939cfddd2SFrançois Tigeot 3039cfddd2SFrançois Tigeot #include <linux/err.h> 31d6aa1cc5SFrançois Tigeot #include <linux/sched.h> 3239cfddd2SFrançois Tigeot 33aa2693a5SFrançois Tigeot struct task_struct * 34aa2693a5SFrançois Tigeot kthread_run(int (*fn)(void *lfnarg), void *data, const char *namefmt, ...); 351dedbd3bSFrançois Tigeot 36aa2693a5SFrançois Tigeot int kthread_stop(struct task_struct *k); 37aa2693a5SFrançois Tigeot 38aa2693a5SFrançois Tigeot bool kthread_should_stop(void); 391dedbd3bSFrançois Tigeot 40*79a4854cSFrançois Tigeot int kthread_park(struct task_struct *k); 41*79a4854cSFrançois Tigeot void kthread_unpark(struct task_struct *k); 42*79a4854cSFrançois Tigeot bool kthread_should_park(void); 43*79a4854cSFrançois Tigeot void kthread_parkme(void); 44*79a4854cSFrançois Tigeot 4539cfddd2SFrançois Tigeot #endif /* _LINUX_KTHREAD_H_ */ 46