From: Jani Nikula <jani.nikula@linux.intel.com>
To: b.zolnierkie@samsung.com, keescook@chromium.org,
j.w.r.degoede@gmail.com, david@lechnology.com
Cc: Yisheng Xie <ysxie@foxmail.com>,
linux-fbdev@vger.kernel.org, andriy.shevchenko@linux.intel.com,
linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org
Subject: Re: [PATCH v2 fbdev-for-next 1/2] fbcon: introduce for_each_registered_fb() helper
Date: Mon, 02 Jul 2018 13:57:50 +0000 [thread overview]
Message-ID: <87fu11rb8h.fsf@intel.com> (raw)
In-Reply-To: <1530343789-4237-1-git-send-email-ysxie@foxmail.com>
On Sat, 30 Jun 2018, Yisheng Xie <ysxie@foxmail.com> wrote:
> Following pattern is often used:
>
> for (i = 0; i < FB_MAX; i++) {
> if (registered_fb[i]) {
> ...
> }
> }
>
> Therefore, as Andy's suggestion, for_each_registered_fb() helper can
> be introduced to make the code easier to read and write by reducing
> indentation level. It also saves few lines of code in each occurrence.
>
> This patch convert all part here at the same time.
>
> Suggested-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Signed-off-by: Yisheng Xie <ysxie@foxmail.com>
> ---
> v2:
> - rebase it to fbdev-for-next branch and add one more loop to replace - per Hans
> - Macro should be protected against nested conditionals. - per Andy
> drivers/video/fbdev/core/fbcon.c | 31 +++++++++++--------------------
> drivers/video/fbdev/core/fbmem.c | 4 +---
> include/linux/fb.h | 4 ++++
> 3 files changed, 16 insertions(+), 23 deletions(-)
>
> diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c
> index 5fb156b..e30d3a1 100644
> --- a/drivers/video/fbdev/core/fbcon.c
> +++ b/drivers/video/fbdev/core/fbcon.c
> @@ -2234,8 +2234,8 @@ static int fbcon_switch(struct vc_data *vc)
> *
> * info->currcon = vc->vc_num;
> */
> - for (i = 0; i < FB_MAX; i++) {
> - if (registered_fb[i] != NULL && registered_fb[i]->fbcon_par) {
> + for_each_registered_fb(i) {
> + if (registered_fb[i]->fbcon_par) {
> struct fbcon_ops *o = registered_fb[i]->fbcon_par;
>
> o->currcon = vc->vc_num;
> @@ -3124,11 +3124,9 @@ static int fbcon_fb_unregistered(struct fb_info *info)
> if (idx = info_idx) {
> info_idx = -1;
>
> - for (i = 0; i < FB_MAX; i++) {
> - if (registered_fb[i] != NULL) {
> - info_idx = i;
> - break;
> - }
> + for_each_registered_fb(i) {
> + info_idx = i;
> + break;
> }
> }
>
> @@ -3609,10 +3607,8 @@ static int fbcon_output_notifier(struct notifier_block *nb,
> deferred_takeover = false;
> logo_shown = FBCON_LOGO_DONTSHOW;
>
> - for (i = 0; i < FB_MAX; i++) {
> - if (registered_fb[i])
> - fbcon_fb_registered(registered_fb[i]);
> - }
> + for_each_registered_fb(i)
> + fbcon_fb_registered(registered_fb[i]);
>
> return NOTIFY_OK;
> }
> @@ -3638,11 +3634,9 @@ static void fbcon_start(void)
>
> console_lock();
>
> - for (i = 0; i < FB_MAX; i++) {
> - if (registered_fb[i] != NULL) {
> - info_idx = i;
> - break;
> - }
> + for_each_registered_fb(i) {
> + info_idx = i;
> + break;
> }
>
> do_fbcon_takeover(0);
> @@ -3669,15 +3663,12 @@ static void fbcon_exit(void)
> kfree((void *)softback_buf);
> softback_buf = 0UL;
>
> - for (i = 0; i < FB_MAX; i++) {
> + for_each_registered_fb(i) {
> int pending = 0;
>
> mapped = 0;
> info = registered_fb[i];
>
> - if (info = NULL)
> - continue;
> -
> if (info->queue.func)
> pending = cancel_work_sync(&info->queue);
> DPRINTK("fbcon: %s pending work\n", (pending ? "canceled" :
> diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c
> index 609438d..645c6ac 100644
> --- a/drivers/video/fbdev/core/fbmem.c
> +++ b/drivers/video/fbdev/core/fbmem.c
> @@ -1593,10 +1593,8 @@ static int do_remove_conflicting_framebuffers(struct apertures_struct *a,
> int i, ret;
>
> /* check all firmware fbs and kick off if the base addr overlaps */
> - for (i = 0 ; i < FB_MAX; i++) {
> + for_each_registered_fb(i) {
> struct apertures_struct *gen_aper;
> - if (!registered_fb[i])
> - continue;
>
> if (!(registered_fb[i]->flags & FBINFO_MISC_FIRMWARE))
> continue;
> diff --git a/include/linux/fb.h b/include/linux/fb.h
> index aa74a22..fd31e6f 100644
> --- a/include/linux/fb.h
> +++ b/include/linux/fb.h
> @@ -650,6 +650,10 @@ extern int fb_get_color_depth(struct fb_var_screeninfo *var,
> extern int num_registered_fb;
> extern struct class *fb_class;
>
> +#define for_each_registered_fb(i) \
> + for (i = 0; i < FB_MAX; i++) \
> + if (!registered_fb[i]) {} else
There's for_each_if in drmP.h to handle dangling else. Maybe that should
be lifted outside of drm.
BR,
Jani.
> +
> extern int lock_fb_info(struct fb_info *info);
>
> static inline void unlock_fb_info(struct fb_info *info)
--
Jani Nikula, Intel Open Source Graphics Center
WARNING: multiple messages have this Message-ID (diff)
From: Jani Nikula <jani.nikula@linux.intel.com>
To: b.zolnierkie@samsung.com, keescook@chromium.org,
j.w.r.degoede@gmail.com, david@lechnology.com
Cc: Yisheng Xie <ysxie@foxmail.com>,
linux-fbdev@vger.kernel.org, andriy.shevchenko@linux.intel.com,
linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org
Subject: Re: [PATCH v2 fbdev-for-next 1/2] fbcon: introduce for_each_registered_fb() helper
Date: Mon, 02 Jul 2018 16:57:50 +0300 [thread overview]
Message-ID: <87fu11rb8h.fsf@intel.com> (raw)
In-Reply-To: <1530343789-4237-1-git-send-email-ysxie@foxmail.com>
On Sat, 30 Jun 2018, Yisheng Xie <ysxie@foxmail.com> wrote:
> Following pattern is often used:
>
> for (i = 0; i < FB_MAX; i++) {
> if (registered_fb[i]) {
> ...
> }
> }
>
> Therefore, as Andy's suggestion, for_each_registered_fb() helper can
> be introduced to make the code easier to read and write by reducing
> indentation level. It also saves few lines of code in each occurrence.
>
> This patch convert all part here at the same time.
>
> Suggested-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Signed-off-by: Yisheng Xie <ysxie@foxmail.com>
> ---
> v2:
> - rebase it to fbdev-for-next branch and add one more loop to replace - per Hans
> - Macro should be protected against nested conditionals. - per Andy
> drivers/video/fbdev/core/fbcon.c | 31 +++++++++++--------------------
> drivers/video/fbdev/core/fbmem.c | 4 +---
> include/linux/fb.h | 4 ++++
> 3 files changed, 16 insertions(+), 23 deletions(-)
>
> diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c
> index 5fb156b..e30d3a1 100644
> --- a/drivers/video/fbdev/core/fbcon.c
> +++ b/drivers/video/fbdev/core/fbcon.c
> @@ -2234,8 +2234,8 @@ static int fbcon_switch(struct vc_data *vc)
> *
> * info->currcon = vc->vc_num;
> */
> - for (i = 0; i < FB_MAX; i++) {
> - if (registered_fb[i] != NULL && registered_fb[i]->fbcon_par) {
> + for_each_registered_fb(i) {
> + if (registered_fb[i]->fbcon_par) {
> struct fbcon_ops *o = registered_fb[i]->fbcon_par;
>
> o->currcon = vc->vc_num;
> @@ -3124,11 +3124,9 @@ static int fbcon_fb_unregistered(struct fb_info *info)
> if (idx == info_idx) {
> info_idx = -1;
>
> - for (i = 0; i < FB_MAX; i++) {
> - if (registered_fb[i] != NULL) {
> - info_idx = i;
> - break;
> - }
> + for_each_registered_fb(i) {
> + info_idx = i;
> + break;
> }
> }
>
> @@ -3609,10 +3607,8 @@ static int fbcon_output_notifier(struct notifier_block *nb,
> deferred_takeover = false;
> logo_shown = FBCON_LOGO_DONTSHOW;
>
> - for (i = 0; i < FB_MAX; i++) {
> - if (registered_fb[i])
> - fbcon_fb_registered(registered_fb[i]);
> - }
> + for_each_registered_fb(i)
> + fbcon_fb_registered(registered_fb[i]);
>
> return NOTIFY_OK;
> }
> @@ -3638,11 +3634,9 @@ static void fbcon_start(void)
>
> console_lock();
>
> - for (i = 0; i < FB_MAX; i++) {
> - if (registered_fb[i] != NULL) {
> - info_idx = i;
> - break;
> - }
> + for_each_registered_fb(i) {
> + info_idx = i;
> + break;
> }
>
> do_fbcon_takeover(0);
> @@ -3669,15 +3663,12 @@ static void fbcon_exit(void)
> kfree((void *)softback_buf);
> softback_buf = 0UL;
>
> - for (i = 0; i < FB_MAX; i++) {
> + for_each_registered_fb(i) {
> int pending = 0;
>
> mapped = 0;
> info = registered_fb[i];
>
> - if (info == NULL)
> - continue;
> -
> if (info->queue.func)
> pending = cancel_work_sync(&info->queue);
> DPRINTK("fbcon: %s pending work\n", (pending ? "canceled" :
> diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c
> index 609438d..645c6ac 100644
> --- a/drivers/video/fbdev/core/fbmem.c
> +++ b/drivers/video/fbdev/core/fbmem.c
> @@ -1593,10 +1593,8 @@ static int do_remove_conflicting_framebuffers(struct apertures_struct *a,
> int i, ret;
>
> /* check all firmware fbs and kick off if the base addr overlaps */
> - for (i = 0 ; i < FB_MAX; i++) {
> + for_each_registered_fb(i) {
> struct apertures_struct *gen_aper;
> - if (!registered_fb[i])
> - continue;
>
> if (!(registered_fb[i]->flags & FBINFO_MISC_FIRMWARE))
> continue;
> diff --git a/include/linux/fb.h b/include/linux/fb.h
> index aa74a22..fd31e6f 100644
> --- a/include/linux/fb.h
> +++ b/include/linux/fb.h
> @@ -650,6 +650,10 @@ extern int fb_get_color_depth(struct fb_var_screeninfo *var,
> extern int num_registered_fb;
> extern struct class *fb_class;
>
> +#define for_each_registered_fb(i) \
> + for (i = 0; i < FB_MAX; i++) \
> + if (!registered_fb[i]) {} else
There's for_each_if in drmP.h to handle dangling else. Maybe that should
be lifted outside of drm.
BR,
Jani.
> +
> extern int lock_fb_info(struct fb_info *info);
>
> static inline void unlock_fb_info(struct fb_info *info)
--
Jani Nikula, Intel Open Source Graphics Center
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
WARNING: multiple messages have this Message-ID (diff)
From: Jani Nikula <jani.nikula@linux.intel.com>
To: Yisheng Xie <ysxie@foxmail.com>,
b.zolnierkie@samsung.com, keescook@chromium.org,
j.w.r.degoede@gmail.com, david@lechnology.com
Cc: Yisheng Xie <ysxie@foxmail.com>,
linux-fbdev@vger.kernel.org, andriy.shevchenko@linux.intel.com,
linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org
Subject: Re: [PATCH v2 fbdev-for-next 1/2] fbcon: introduce for_each_registered_fb() helper
Date: Mon, 02 Jul 2018 16:57:50 +0300 [thread overview]
Message-ID: <87fu11rb8h.fsf@intel.com> (raw)
In-Reply-To: <1530343789-4237-1-git-send-email-ysxie@foxmail.com>
On Sat, 30 Jun 2018, Yisheng Xie <ysxie@foxmail.com> wrote:
> Following pattern is often used:
>
> for (i = 0; i < FB_MAX; i++) {
> if (registered_fb[i]) {
> ...
> }
> }
>
> Therefore, as Andy's suggestion, for_each_registered_fb() helper can
> be introduced to make the code easier to read and write by reducing
> indentation level. It also saves few lines of code in each occurrence.
>
> This patch convert all part here at the same time.
>
> Suggested-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Signed-off-by: Yisheng Xie <ysxie@foxmail.com>
> ---
> v2:
> - rebase it to fbdev-for-next branch and add one more loop to replace - per Hans
> - Macro should be protected against nested conditionals. - per Andy
> drivers/video/fbdev/core/fbcon.c | 31 +++++++++++--------------------
> drivers/video/fbdev/core/fbmem.c | 4 +---
> include/linux/fb.h | 4 ++++
> 3 files changed, 16 insertions(+), 23 deletions(-)
>
> diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c
> index 5fb156b..e30d3a1 100644
> --- a/drivers/video/fbdev/core/fbcon.c
> +++ b/drivers/video/fbdev/core/fbcon.c
> @@ -2234,8 +2234,8 @@ static int fbcon_switch(struct vc_data *vc)
> *
> * info->currcon = vc->vc_num;
> */
> - for (i = 0; i < FB_MAX; i++) {
> - if (registered_fb[i] != NULL && registered_fb[i]->fbcon_par) {
> + for_each_registered_fb(i) {
> + if (registered_fb[i]->fbcon_par) {
> struct fbcon_ops *o = registered_fb[i]->fbcon_par;
>
> o->currcon = vc->vc_num;
> @@ -3124,11 +3124,9 @@ static int fbcon_fb_unregistered(struct fb_info *info)
> if (idx == info_idx) {
> info_idx = -1;
>
> - for (i = 0; i < FB_MAX; i++) {
> - if (registered_fb[i] != NULL) {
> - info_idx = i;
> - break;
> - }
> + for_each_registered_fb(i) {
> + info_idx = i;
> + break;
> }
> }
>
> @@ -3609,10 +3607,8 @@ static int fbcon_output_notifier(struct notifier_block *nb,
> deferred_takeover = false;
> logo_shown = FBCON_LOGO_DONTSHOW;
>
> - for (i = 0; i < FB_MAX; i++) {
> - if (registered_fb[i])
> - fbcon_fb_registered(registered_fb[i]);
> - }
> + for_each_registered_fb(i)
> + fbcon_fb_registered(registered_fb[i]);
>
> return NOTIFY_OK;
> }
> @@ -3638,11 +3634,9 @@ static void fbcon_start(void)
>
> console_lock();
>
> - for (i = 0; i < FB_MAX; i++) {
> - if (registered_fb[i] != NULL) {
> - info_idx = i;
> - break;
> - }
> + for_each_registered_fb(i) {
> + info_idx = i;
> + break;
> }
>
> do_fbcon_takeover(0);
> @@ -3669,15 +3663,12 @@ static void fbcon_exit(void)
> kfree((void *)softback_buf);
> softback_buf = 0UL;
>
> - for (i = 0; i < FB_MAX; i++) {
> + for_each_registered_fb(i) {
> int pending = 0;
>
> mapped = 0;
> info = registered_fb[i];
>
> - if (info == NULL)
> - continue;
> -
> if (info->queue.func)
> pending = cancel_work_sync(&info->queue);
> DPRINTK("fbcon: %s pending work\n", (pending ? "canceled" :
> diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c
> index 609438d..645c6ac 100644
> --- a/drivers/video/fbdev/core/fbmem.c
> +++ b/drivers/video/fbdev/core/fbmem.c
> @@ -1593,10 +1593,8 @@ static int do_remove_conflicting_framebuffers(struct apertures_struct *a,
> int i, ret;
>
> /* check all firmware fbs and kick off if the base addr overlaps */
> - for (i = 0 ; i < FB_MAX; i++) {
> + for_each_registered_fb(i) {
> struct apertures_struct *gen_aper;
> - if (!registered_fb[i])
> - continue;
>
> if (!(registered_fb[i]->flags & FBINFO_MISC_FIRMWARE))
> continue;
> diff --git a/include/linux/fb.h b/include/linux/fb.h
> index aa74a22..fd31e6f 100644
> --- a/include/linux/fb.h
> +++ b/include/linux/fb.h
> @@ -650,6 +650,10 @@ extern int fb_get_color_depth(struct fb_var_screeninfo *var,
> extern int num_registered_fb;
> extern struct class *fb_class;
>
> +#define for_each_registered_fb(i) \
> + for (i = 0; i < FB_MAX; i++) \
> + if (!registered_fb[i]) {} else
There's for_each_if in drmP.h to handle dangling else. Maybe that should
be lifted outside of drm.
BR,
Jani.
> +
> extern int lock_fb_info(struct fb_info *info);
>
> static inline void unlock_fb_info(struct fb_info *info)
--
Jani Nikula, Intel Open Source Graphics Center
next prev parent reply other threads:[~2018-07-02 13:57 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20180630073004epcas2p2d87aa0abbbae08dafd661c8378ba1de1@epcas2p2.samsung.com>
2018-06-30 7:29 ` [PATCH v2 fbdev-for-next 1/2] fbcon: introduce for_each_registered_fb() helper Yisheng Xie
2018-06-30 7:29 ` Yisheng Xie
2018-06-30 10:32 ` Hans de Goede
2018-06-30 10:32 ` Hans de Goede
2018-06-30 15:50 ` Andy Shevchenko
2018-06-30 15:50 ` Andy Shevchenko
2018-07-02 13:57 ` Jani Nikula [this message]
2018-07-02 13:57 ` Jani Nikula
2018-07-02 13:57 ` Jani Nikula
2018-07-24 15:18 ` Bartlomiej Zolnierkiewicz
2018-07-24 15:18 ` Bartlomiej Zolnierkiewicz
2018-07-24 15:18 ` Bartlomiej Zolnierkiewicz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87fu11rb8h.fsf@intel.com \
--to=jani.nikula@linux.intel.com \
--cc=andriy.shevchenko@linux.intel.com \
--cc=b.zolnierkie@samsung.com \
--cc=david@lechnology.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=j.w.r.degoede@gmail.com \
--cc=keescook@chromium.org \
--cc=linux-fbdev@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=ysxie@foxmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.