From mboxrd@z Thu Jan 1 00:00:00 1970 From: Zefan Li Subject: Re: [PATCH 2/2] cpusets,isolcpus: add file to show isolated cpus in cpuset Date: Thu, 26 Feb 2015 19:05:57 +0800 Message-ID: <54EEFE15.3010005@huawei.com> References: <1424882288-2910-1-git-send-email-riel@redhat.com> <1424882288-2910-3-git-send-email-riel@redhat.com> Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1424882288-2910-3-git-send-email-riel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> Sender: cgroups-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org List-ID: Content-Type: text/plain; charset="us-ascii" To: riel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Peter Zijlstra , Clark Williams , Ingo Molnar , Luiz Capitulino , David Rientjes , Mike Galbraith , cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org > +static void cpuset_seq_print_isolcpus(struct seq_file *sf, struct cpuset *cs) > +{ > + cpumask_var_t my_isolated_cpus; > + > + if (!alloc_cpumask_var(&my_isolated_cpus, GFP_KERNEL)) > + return; > + Make it return -ENOMEM ? Or make it a global variable and allocate memory for it in cpuset_init(). > + cpumask_and(my_isolated_cpus, cs->cpus_allowed, cpu_isolated_map); > + > + seq_printf(sf, "%*pbl\n", nodemask_pr_args(my_isolated_cpus)); > + > + free_cpumask_var(my_isolated_cpus); > +} > + > /* > * These ascii lists should be read in a single call, by using a user > * buffer large enough to hold the entire map. If read in smaller > @@ -1733,6 +1748,9 @@ static int cpuset_common_seq_show(struct seq_file *sf, void *v) > case FILE_EFFECTIVE_MEMLIST: > seq_printf(sf, "%*pbl\n", nodemask_pr_args(&cs->effective_mems)); > break; > + case FILE_ISOLCPUS: > + cpuset_seq_print_isolcpus(sf, cs); > + break; > default: > ret = -EINVAL; > } > @@ -1893,6 +1911,12 @@ static struct cftype files[] = { > .private = FILE_MEMORY_PRESSURE_ENABLED, > }, > > + { > + .name = "isolcpus", > + .seq_show = cpuset_common_seq_show, > + .private = FILE_ISOLCPUS, > + }, > + > { } /* terminate */ > }; > > From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932163AbbBZLGZ (ORCPT ); Thu, 26 Feb 2015 06:06:25 -0500 Received: from szxga01-in.huawei.com ([119.145.14.64]:14979 "EHLO szxga01-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753475AbbBZLGY (ORCPT ); Thu, 26 Feb 2015 06:06:24 -0500 Message-ID: <54EEFE15.3010005@huawei.com> Date: Thu, 26 Feb 2015 19:05:57 +0800 From: Zefan Li User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/20130801 Thunderbird/17.0.8 MIME-Version: 1.0 To: CC: , Peter Zijlstra , Clark Williams , Ingo Molnar , "Luiz Capitulino" , David Rientjes , Mike Galbraith , Subject: Re: [PATCH 2/2] cpusets,isolcpus: add file to show isolated cpus in cpuset References: <1424882288-2910-1-git-send-email-riel@redhat.com> <1424882288-2910-3-git-send-email-riel@redhat.com> In-Reply-To: <1424882288-2910-3-git-send-email-riel@redhat.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset="GB2312" Content-Transfer-Encoding: 7bit X-Originating-IP: [10.177.18.230] X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org > +static void cpuset_seq_print_isolcpus(struct seq_file *sf, struct cpuset *cs) > +{ > + cpumask_var_t my_isolated_cpus; > + > + if (!alloc_cpumask_var(&my_isolated_cpus, GFP_KERNEL)) > + return; > + Make it return -ENOMEM ? Or make it a global variable and allocate memory for it in cpuset_init(). > + cpumask_and(my_isolated_cpus, cs->cpus_allowed, cpu_isolated_map); > + > + seq_printf(sf, "%*pbl\n", nodemask_pr_args(my_isolated_cpus)); > + > + free_cpumask_var(my_isolated_cpus); > +} > + > /* > * These ascii lists should be read in a single call, by using a user > * buffer large enough to hold the entire map. If read in smaller > @@ -1733,6 +1748,9 @@ static int cpuset_common_seq_show(struct seq_file *sf, void *v) > case FILE_EFFECTIVE_MEMLIST: > seq_printf(sf, "%*pbl\n", nodemask_pr_args(&cs->effective_mems)); > break; > + case FILE_ISOLCPUS: > + cpuset_seq_print_isolcpus(sf, cs); > + break; > default: > ret = -EINVAL; > } > @@ -1893,6 +1911,12 @@ static struct cftype files[] = { > .private = FILE_MEMORY_PRESSURE_ENABLED, > }, > > + { > + .name = "isolcpus", > + .seq_show = cpuset_common_seq_show, > + .private = FILE_ISOLCPUS, > + }, > + > { } /* terminate */ > }; > >