svn commit: r315856 - in head/sys/compat/linuxkpi/common: include/linux src
Conrad Meyer
cem at freebsd.org
Thu Mar 23 15:44:52 UTC 2017
On Thu, Mar 23, 2017 at 3:48 AM, Hans Petter Selasky
<hselasky at freebsd.org> wrote:
> Author: hselasky
> Date: Thu Mar 23 10:48:10 2017
> New Revision: 315856
> URL: https://svnweb.freebsd.org/changeset/base/315856
>
> Log:
> Add support for ratelimited printouts in the LinuxKPI.
>
> ...
--- head/sys/compat/linuxkpi/common/include/linux/kernel.h Thu
Mar 23 10:43:29 2017 (r315855)
> +++ head/sys/compat/linuxkpi/common/include/linux/kernel.h Thu Mar 23 10:48:10 2017 (r315856)
> @@ -224,6 +224,11 @@ scnprintf(char *buf, size_t size, const
> log_once(LOG_INFO, pr_fmt(fmt), ##__VA_ARGS__)
> #define pr_cont(fmt, ...) \
> printk(KERN_CONT fmt, ##__VA_ARGS__)
> +#define pr_warn_ratelimited(...) do { \
> + static time_t __ratelimited; \
> + if (linux_ratelimited(&__ratelimited)) \
> + pr_warning(__VA_ARGS__); \
> +} while (0)
>
> #ifndef WARN
> #define WARN(condition, ...) ({ \
> @@ -331,4 +336,6 @@ abs64(int64_t x)
> return (x < 0 ? -x : x);
> }
>
> +extern bool linux_ratelimited(time_t *);
> +
> #endif /* _LINUX_KERNEL_H_ */
>
> Modified: head/sys/compat/linuxkpi/common/src/linux_compat.c
> ==============================================================================
> --- head/sys/compat/linuxkpi/common/src/linux_compat.c Thu Mar 23 10:43:29 2017 (r315855)
> +++ head/sys/compat/linuxkpi/common/src/linux_compat.c Thu Mar 23 10:48:10 2017 (r315856)
> @@ -1484,6 +1484,20 @@ __unregister_chrdev(unsigned int major,
> bool linux_cpu_has_clflush;
> #endif
>
> +bool
> +linux_ratelimited(time_t *ptime)
> +{
> + /* make sure uptime is not zero by OR'ing bit 31 */
> + time_t curr = time_uptime | (1U << 31);
> +
> + /* check if one or more seconds have passed */
> + if (*ptime != curr) {
> + *ptime = curr;
> + return (1);
> + }
> + return (0);
> +}
> +
Hi Hans,
Is there any reason to use this hand-rolled thing to limit ratelimited
logging instead of ppsratecheck()?
Best,
Conrad
More information about the svn-src-all
mailing list