svn commit: r340709 - in head/sys: compat/linuxkpi/common/include/linux vm
Ben Widawsky
bwidawsk at freebsd.org
Wed Nov 21 01:09:34 UTC 2018
On 18-11-21 02:00:57, Oliver Pinter wrote:
>
>
> On Tuesday, November 20, 2018, Ben Widawsky <bwidawsk at freebsd.org> wrote:
>
> Author: bwidawsk
> Date: Tue Nov 20 22:49:19 2018
> New Revision: 340709
> URL: https://svnweb.freebsd.org/changeset/base/340709
>
> Log:
> linuxkpi: Add some basic swap functions
>
> These are used by kms-drm to determine various heuristics relate
> memory conditions.
>
> The number of free swap pages is just a variable, and it can be
> much cheaper by either adding a new getter, or simply extern'ing
> swap_total. However, this patch opts to use the more expensive,
> existing interface - since this isn't an operation in a high per
> path.
>
> This allows us to remove some more gpl linuxkpi and do the follo
> kms-drm:
> git rm linuxkpi/gplv2/include/linux/swap.h
>
> Reviewed by: mmacy, Johannes Lundberg <johalun0 at gmail.com>
> Approved by: emaste (mentor)
> Differential Revision: https://reviews.freebsd.org/D18052
>
> Added:
> head/sys/compat/linuxkpi/common/include/linux/swap.h (contents, props
> changed)
> Modified:
> head/sys/vm/vm_pageout.h
> head/sys/vm/vm_swapout.c
>
> Added: head/sys/compat/linuxkpi/common/include/linux/swap.h
> ===========================================================================
> ===
> --- /dev/null 00:00:00 1970 (empty, because file is newly added)
> +++ head/sys/compat/linuxkpi/common/include/linux/swap.h Tue Nov 20
> 22:49:19 2018 (r340709)
> @@ -0,0 +1,102 @@
> +/*-
> + * Copyright (c) 2018 Intel Corporation
> + *
> + * Redistribution and use in source and binary forms, with or without
> + * modification, are permitted provided that the following conditions are
> + * met:
> + * 1. Redistributions of source code must retain the above copyright
> + * notice, this list of conditions and the following disclaimer.
> + * 2. Redistributions in binary form must reproduce the above copyright
> + * notice, this list of conditions and the following disclaimer in
> + * the documentation and/or other materials provided with the
> + * distribution.
> + *
> + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
> + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
> + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
> PURPOSE
> + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
> + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
> CONSEQUENTIAL
> + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
> + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
> + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
> STRICT
> + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
> WAY
> + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
> + * SUCH DAMAGE.
> + *
> + * $FreeBSD$
> + */
> +
> +#ifndef _LINUX_SWAP_H_
> +#define _LINUX_SWAP_H_
> +
> +#include <vm/swap_pager.h>
> +#include <vm/vm_pageout.h>
> +
> +static inline long
> +get_nr_swap_pages(void)
> +{
> + int i, j;
> +
> + /* NB: This could be done cheaply by obtaining swap_total directly
> */
> + swap_pager_status(&i, &j);
> + return i - j;
> +}
> +
> +static inline int
> +current_is_kswapd(void)
> +{
> + return vm_curproc_is_vmproc();
> +}
> +
> +#endif
>
>
> Probably I'm wrong, but this file contains twice the same intended content.
>
You are correct, but I have already fixed it. I have some problems with my
workflow still, apparently. :(
>
> +/*-
> + * Copyright (c) 2018 Intel Corporation
> + *
> + * Redistribution and use in source and binary forms, with or without
> + * modification, are permitted provided that the following conditions are
> + * met:
> + * 1. Redistributions of source code must retain the above copyright
> + * notice, this list of conditions and the following disclaimer.
> + * 2. Redistributions in binary form must reproduce the above copyright
> + * notice, this list of conditions and the following disclaimer in
> + * the documentation and/or other materials provided with the
> + * distribution.
> + *
> + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
> + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
> + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
> PURPOSE
> + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
> + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
> CONSEQUENTIAL
> + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
> + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
> + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
> STRICT
> + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
> WAY
> + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
> + * SUCH DAMAGE.
> + *
> + * $FreeBSD$
> + */
> +
> +#ifndef _LINUX_SWAP_H_
> +#define _LINUX_SWAP_H_
> +
> +#include <vm/swap_pager.h>
> +#include <vm/vm_pageout.h>
> +
> +static inline long
> +get_nr_swap_pages(void)
> +{
> + int i, j;
> +
> + /* NB: This could be done cheaply by obtaining swap_total directly
> */
> + swap_pager_status(&i, &j);
> + return i - j;
> +}
> +
> +static inline int
> +current_is_kswapd(void)
> +{
> + return vm_curproc_is_vmproc();
> +}
> +
> +#endif
>
> Modified: head/sys/vm/vm_pageout.h
> ===========================================================================
> ===
> --- head/sys/vm/vm_pageout.h Tue Nov 20 22:24:18 2018 (r340708)
> +++ head/sys/vm/vm_pageout.h Tue Nov 20 22:49:19 2018 (r340709)
> @@ -106,5 +106,8 @@ void vm_pageout_oom(int shortage);
>
> void vm_swapout_run(void);
> void vm_swapout_run_idle(void);
> +
> +bool vm_curproc_is_vmproc(void);
> +
> #endif /* _KERNEL */
> #endif /* _VM_VM_PAGEOUT_H_ */
>
> Modified: head/sys/vm/vm_swapout.c
> ===========================================================================
> ===
> --- head/sys/vm/vm_swapout.c Tue Nov 20 22:24:18 2018 (r340708)
> +++ head/sys/vm/vm_swapout.c Tue Nov 20 22:49:19 2018 (r340709)
> @@ -961,3 +961,10 @@ swapout(struct proc *p)
> p->p_swtick = ticks;
> return (0);
> }
> +
> +/* Used to determine if the current process is itself the reaper. */
> +bool
> +vm_curproc_is_vmproc(void)
> +{
> + return curproc == vmproc;
> +}
> _______________________________________________
> svn-src-head at freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/svn-src-head
> To unsubscribe, send any mail to "svn-src-head-unsubscribe at freebsd.org"
>
More information about the svn-src-all
mailing list