Changeset View
Changeset View
Standalone View
Standalone View
sys/compat/linuxkpi/common/include/linux/delay.h
| Show All 24 Lines | |||||
| * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
| * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||||
| * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
| */ | */ | ||||
| #ifndef _LINUXKPI_LINUX_DELAY_H_ | #ifndef _LINUXKPI_LINUX_DELAY_H_ | ||||
| #define _LINUXKPI_LINUX_DELAY_H_ | #define _LINUXKPI_LINUX_DELAY_H_ | ||||
| #include <linux/math.h> | |||||
| #include <linux/sched.h> | |||||
| #include <linux/jiffies.h> | #include <linux/jiffies.h> | ||||
| #include <sys/systm.h> | #include <sys/systm.h> | ||||
| static inline void | static inline void | ||||
| linux_msleep(unsigned int ms) | linux_msleep(unsigned int ms) | ||||
| { | { | ||||
| /* guard against invalid values */ | /* guard against invalid values */ | ||||
| if (ms == 0) | if (ms == 0) | ||||
| ms = 1; | ms = 1; | ||||
| Show All 17 Lines | |||||
| static inline void | static inline void | ||||
| ndelay(unsigned long x) | ndelay(unsigned long x) | ||||
| { | { | ||||
| DELAY(howmany(x, 1000)); | DELAY(howmany(x, 1000)); | ||||
| } | } | ||||
| static inline void | static inline void | ||||
| usleep_range(unsigned long min, unsigned long max) | usleep_range_state(unsigned long min, unsigned long max, unsigned int state) | ||||
| { | { | ||||
| KASSERT(state == TASK_UNINTERRUPTIBLE, ("%s: state=%d unsupported\n", | |||||
| __func__, state)); | |||||
| /* guard against invalid values */ | /* guard against invalid values */ | ||||
| if (min == 0) | if (min == 0) | ||||
| min = 1; | min = 1; | ||||
| pause_sbt("lnxsleep", ustosbt(min), 0, C_HARDCLOCK); | pause_sbt("lnxsleep", ustosbt(min), 0, C_HARDCLOCK); | ||||
| } | |||||
| static inline void | |||||
| usleep_range(unsigned long min, unsigned long max) | |||||
| { | |||||
| usleep_range_state(min, max, TASK_UNINTERRUPTIBLE); | |||||
| } | } | ||||
| extern unsigned int linux_msleep_interruptible(unsigned int ms); | extern unsigned int linux_msleep_interruptible(unsigned int ms); | ||||
| static inline void | static inline void | ||||
| fsleep(unsigned long us) | fsleep(unsigned long us) | ||||
| { | { | ||||
| if (us < 10) | if (us < 10) | ||||
| udelay(us); | udelay(us); | ||||
| else | else | ||||
| usleep_range(us, us); | usleep_range(us, us); | ||||
| } | } | ||||
| #endif /* _LINUXKPI_LINUX_DELAY_H_ */ | #endif /* _LINUXKPI_LINUX_DELAY_H_ */ | ||||