From: Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>
To: Richard Cochran <richardcochran-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Alan Cox <alan-qBU/x9rampVanCEyBjwyrvXRex20P6io@public.gmane.org>,
Christoph Lameter <cl-vYTEC60ixJUAvxtiuMwx3w@public.gmane.org>,
David Miller <davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>,
John Stultz <johnstul-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>,
Krzysztof Halasa <khc-9GfyWEdoJtJmR6Xm/wNWPw@public.gmane.org>,
Peter Zijlstra <peterz-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>,
Rodolfo Giometti <giometti-k2GhghHVRtY@public.gmane.org>,
Thomas Gleixner <tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org>
Subject: Re: [PATCH V7 3/8] posix clocks: introduce dynamic clocks
Date: Thu, 16 Dec 2010 17:16:42 +0100 [thread overview]
Message-ID: <201012161716.42520.arnd@arndb.de> (raw)
In-Reply-To: <8debe4d48d9a6484b7fbd35d8888524155fed977.1292512461.git.richard.cochran-3mrvs1K0uXizZXS1Dc/lvw@public.gmane.org>
On Thursday 16 December 2010, Richard Cochran wrote:
> This patch adds support for adding and removing posix clocks. The
> clock lifetime cycle is patterned after usb devices. Each clock is
> represented by a standard character device. In addition, the driver
> may optionally implemented custom character device operations.
>
> The dynamic posix clocks do not yet do anything useful. This patch
> merely provides some needed infrastructure.
>
> Signed-off-by: Richard Cochran <richard.cochran-3mrvs1K0uXizZXS1Dc/lvw@public.gmane.org>
> +struct posix_clock_fops {
> + int (*fasync) (void *priv, int fd, struct file *file, int on);
> + int (*mmap) (void *priv, struct vm_area_struct *vma);
> + int (*open) (void *priv, fmode_t f_mode);
> + int (*release) (void *priv);
> + long (*ioctl) (void *priv, unsigned int cmd, unsigned long arg);
> + long (*compat_ioctl) (void *priv, unsigned int cmd, unsigned long arg);
> + ssize_t (*read) (void *priv, uint flags, char __user *buf, size_t cnt);
> + unsigned int (*poll) (void *priv, struct file *file, poll_table *wait);
> +};
Thanks for the change to a private ops structure. Three more
suggestions for this:
* I would recommend starting without a compat_ioctl operation if you can.
Just mandate that all ioctls for posix clocks are compatible and call
fops->ioctl from the posix_clock_compat_ioctl() function.
If you ever need compat_ioctl handling, it can still be added later.
* Instead of passing a void pointer, why not pass a struct posix_clock
pointer to the lower device and use container_of? That follows what
we do in other subsystems and allows you save one allocation, by
including the posix_clock into the specific clock struct like
ptp_clock.
> +struct posix_clock_operations {
> + struct module *owner;
> + struct posix_clock_fops fops;
> + int (*clock_adjtime)(void *priv, struct timex *tx);
You can easily combine the two structures and get rid of the extra
struct posix_clock_fops by moving its operations into
posix_clock_operations.
Looks really good otherwise.
Arnd
WARNING: multiple messages have this Message-ID (diff)
From: Arnd Bergmann <arnd@arndb.de>
To: Richard Cochran <richardcochran@gmail.com>
Cc: linux-kernel@vger.kernel.org, linux-api@vger.kernel.org,
netdev@vger.kernel.org, Alan Cox <alan@lxorguk.ukuu.org.uk>,
Christoph Lameter <cl@linux.com>,
David Miller <davem@davemloft.net>,
John Stultz <johnstul@us.ibm.com>,
Krzysztof Halasa <khc@pm.waw.pl>,
Peter Zijlstra <peterz@infradead.org>,
Rodolfo Giometti <giometti@linux.it>,
Thomas Gleixner <tglx@linutronix.de>
Subject: Re: [PATCH V7 3/8] posix clocks: introduce dynamic clocks
Date: Thu, 16 Dec 2010 17:16:42 +0100 [thread overview]
Message-ID: <201012161716.42520.arnd@arndb.de> (raw)
In-Reply-To: <8debe4d48d9a6484b7fbd35d8888524155fed977.1292512461.git.richard.cochran@omicron.at>
On Thursday 16 December 2010, Richard Cochran wrote:
> This patch adds support for adding and removing posix clocks. The
> clock lifetime cycle is patterned after usb devices. Each clock is
> represented by a standard character device. In addition, the driver
> may optionally implemented custom character device operations.
>
> The dynamic posix clocks do not yet do anything useful. This patch
> merely provides some needed infrastructure.
>
> Signed-off-by: Richard Cochran <richard.cochran@omicron.at>
> +struct posix_clock_fops {
> + int (*fasync) (void *priv, int fd, struct file *file, int on);
> + int (*mmap) (void *priv, struct vm_area_struct *vma);
> + int (*open) (void *priv, fmode_t f_mode);
> + int (*release) (void *priv);
> + long (*ioctl) (void *priv, unsigned int cmd, unsigned long arg);
> + long (*compat_ioctl) (void *priv, unsigned int cmd, unsigned long arg);
> + ssize_t (*read) (void *priv, uint flags, char __user *buf, size_t cnt);
> + unsigned int (*poll) (void *priv, struct file *file, poll_table *wait);
> +};
Thanks for the change to a private ops structure. Three more
suggestions for this:
* I would recommend starting without a compat_ioctl operation if you can.
Just mandate that all ioctls for posix clocks are compatible and call
fops->ioctl from the posix_clock_compat_ioctl() function.
If you ever need compat_ioctl handling, it can still be added later.
* Instead of passing a void pointer, why not pass a struct posix_clock
pointer to the lower device and use container_of? That follows what
we do in other subsystems and allows you save one allocation, by
including the posix_clock into the specific clock struct like
ptp_clock.
> +struct posix_clock_operations {
> + struct module *owner;
> + struct posix_clock_fops fops;
> + int (*clock_adjtime)(void *priv, struct timex *tx);
You can easily combine the two structures and get rid of the extra
struct posix_clock_fops by moving its operations into
posix_clock_operations.
Looks really good otherwise.
Arnd
next prev parent reply other threads:[~2010-12-16 16:16 UTC|newest]
Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-16 15:41 [PATCH V7 0/8] ptp: IEEE 1588 hardware clock support Richard Cochran
2010-12-16 15:43 ` [PATCH V7 3/8] posix clocks: introduce dynamic clocks Richard Cochran
[not found] ` <8debe4d48d9a6484b7fbd35d8888524155fed977.1292512461.git.richard.cochran-3mrvs1K0uXizZXS1Dc/lvw@public.gmane.org>
2010-12-16 16:16 ` Arnd Bergmann [this message]
2010-12-16 16:16 ` Arnd Bergmann
2010-12-16 20:56 ` Thomas Gleixner
2010-12-17 6:29 ` Richard Cochran
[not found] ` <cover.1292512461.git.richard.cochran-3mrvs1K0uXizZXS1Dc/lvw@public.gmane.org>
2010-12-16 15:41 ` [PATCH V7 1/8] ntp: add ADJ_SETOFFSET mode bit Richard Cochran
2010-12-16 15:41 ` Richard Cochran
[not found] ` <880d82bb8120f73973db27e0c48e949014b1a106.1292512461.git.richard.cochran-3mrvs1K0uXizZXS1Dc/lvw@public.gmane.org>
2010-12-16 17:48 ` Thomas Gleixner
2010-12-16 17:48 ` Thomas Gleixner
2010-12-17 20:16 ` Kuwahara,T.
2010-12-17 20:16 ` Kuwahara,T.
[not found] ` <AANLkTi=yGoFwYt4p_LeHtAQyYgmURspO-p57UdL0sUEZ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-12-21 7:56 ` Richard Cochran
2010-12-21 7:56 ` Richard Cochran
[not found] ` <20101221075612.GA13626-7KxsofuKt4IfAd9E5cN8NEzG7cXyKsk/@public.gmane.org>
2010-12-21 20:57 ` Kuwahara,T.
2010-12-21 20:57 ` Kuwahara,T.
[not found] ` <AANLkTimJd5pScKTiDxuYd-h+NevYbCusyvUAqmUDXe8h-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-12-21 22:25 ` john stultz
2010-12-21 22:25 ` john stultz
2010-12-22 7:13 ` Richard Cochran
2010-12-22 20:27 ` Kuwahara,T.
2010-12-22 20:27 ` Kuwahara,T.
[not found] ` <AANLkTimmTzH8+fSYmbajqZ+hU5Ps-UZaTp_1TYzjHB6P-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-12-23 0:00 ` john stultz
2010-12-23 0:00 ` john stultz
2010-12-23 6:13 ` Richard Cochran
2010-12-23 6:13 ` Richard Cochran
2010-12-25 20:38 ` Kuwahara,T.
2010-12-26 14:14 ` Richard Cochran
2010-12-21 19:37 ` john stultz
2010-12-21 21:13 ` Kuwahara,T.
[not found] ` <AANLkTikHV-qN73Zvvvxn76vtFFKG_VNTQhF3qpqTnOrE-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-12-21 21:59 ` john stultz
2010-12-21 21:59 ` john stultz
2010-12-22 7:11 ` Richard Cochran
2010-12-22 7:11 ` Richard Cochran
2010-12-22 9:58 ` Alexander Gordeev
2010-12-16 15:42 ` [PATCH V7 2/8] posix clocks: introduce a syscall for clock tuning Richard Cochran
2010-12-16 15:42 ` Richard Cochran
[not found] ` <a93ce18c2987f7e102bc2ff5b12130211c222ea7.1292512461.git.richard.cochran-3mrvs1K0uXizZXS1Dc/lvw@public.gmane.org>
2010-12-16 15:51 ` Arnd Bergmann
2010-12-16 15:51 ` Arnd Bergmann
2010-12-16 17:55 ` Thomas Gleixner
2010-12-16 17:55 ` Thomas Gleixner
2010-12-16 15:43 ` [PATCH V7 4/8] posix clocks: hook dynamic clocks into system calls Richard Cochran
2010-12-16 15:43 ` Richard Cochran
[not found] ` <6241238a1df55033e50b151ec9d35ba957e43d53.1292512461.git.richard.cochran-3mrvs1K0uXizZXS1Dc/lvw@public.gmane.org>
2010-12-16 23:20 ` Thomas Gleixner
2010-12-16 23:20 ` Thomas Gleixner
2010-12-17 7:04 ` Richard Cochran
[not found] ` <20101217070450.GB2982-7KxsofuKt4IfAd9E5cN8NEzG7cXyKsk/@public.gmane.org>
2010-12-17 10:03 ` Thomas Gleixner
2010-12-17 10:03 ` Thomas Gleixner
2010-12-21 8:00 ` Richard Cochran
2010-12-22 8:21 ` Richard Cochran
2010-12-16 15:44 ` [PATCH V7 5/8] ptp: Added a brand new class driver for ptp clocks Richard Cochran
2010-12-16 15:44 ` Richard Cochran
2010-12-16 15:57 ` Arnd Bergmann
2010-12-16 16:08 ` Rodolfo Giometti
2010-12-16 15:44 ` [PATCH V7 7/8] ptp: Added a clock driver for the IXP46x Richard Cochran
2010-12-16 15:44 ` Richard Cochran
[not found] ` <d2e0a5ac5eb51e9e4c7fcc94723b67c72c2f57c1.1292512461.git.richard.cochran-3mrvs1K0uXizZXS1Dc/lvw@public.gmane.org>
2011-01-02 8:45 ` Pavel Machek
2011-01-02 8:45 ` Pavel Machek
[not found] ` <20110102084505.GA3980-+ZI9xUNit7I@public.gmane.org>
2011-01-02 9:12 ` Richard Cochran
2011-01-02 9:12 ` Richard Cochran
[not found] ` <20110102091233.GA2847-7KxsofuKt4IfAd9E5cN8NEzG7cXyKsk/@public.gmane.org>
2011-01-02 9:20 ` Pavel Machek
2011-01-02 9:20 ` Pavel Machek
2011-01-03 17:07 ` Richard Cochran
[not found] ` <20110103170732.GA3700-7KxsofuKt4IfAd9E5cN8NEzG7cXyKsk/@public.gmane.org>
2011-01-06 20:04 ` Pavel Machek
2011-01-06 20:04 ` Pavel Machek
2011-01-02 9:19 ` Richard Cochran
2011-01-02 9:19 ` Richard Cochran
2010-12-16 15:44 ` [PATCH V7 6/8] ptp: Added a clock that uses the eTSEC found on the MPC85xx Richard Cochran
2010-12-16 15:45 ` [PATCH V7 8/8] ptp: Added a clock driver for the National Semiconductor PHYTER Richard Cochran
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=201012161716.42520.arnd@arndb.de \
--to=arnd-r2ngtmty4d4@public.gmane.org \
--cc=alan-qBU/x9rampVanCEyBjwyrvXRex20P6io@public.gmane.org \
--cc=cl-vYTEC60ixJUAvxtiuMwx3w@public.gmane.org \
--cc=davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org \
--cc=giometti-k2GhghHVRtY@public.gmane.org \
--cc=johnstul-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org \
--cc=khc-9GfyWEdoJtJmR6Xm/wNWPw@public.gmane.org \
--cc=linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=peterz-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org \
--cc=richardcochran-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org \
/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.