From: Simon Horman <horms@kernel.org>
To: Xabier Marquiegui <reibax@gmail.com>
Cc: richardcochran@gmail.com, chrony-dev@chrony.tuxfamily.org,
mlichvar@redhat.com, netdev@vger.kernel.org,
ntp-lists@mattcorallo.com
Subject: Re: [PATCH 2/3] ptp: support multiple timestamp event readers
Date: Wed, 6 Sep 2023 20:13:49 +0200 [thread overview]
Message-ID: <20230906181349.GE270386@kernel.org> (raw)
In-Reply-To: <20230906104754.1324412-3-reibax@gmail.com>
On Wed, Sep 06, 2023 at 12:47:53PM +0200, Xabier Marquiegui wrote:
> Use linked lists to create one event queue per open file. This enables
> simultaneous readers for timestamp event queues.
>
> Signed-off-by: Xabier Marquiegui <reibax@gmail.com>
Hi Xabier,
some minor feedback from my side
...
> diff --git a/drivers/ptp/ptp_chardev.c b/drivers/ptp/ptp_chardev.c
> index 1ea11f864abb..c65dc6fefaa6 100644
> --- a/drivers/ptp/ptp_chardev.c
> +++ b/drivers/ptp/ptp_chardev.c
> @@ -103,9 +103,39 @@ int ptp_set_pinfunc(struct ptp_clock *ptp, unsigned int pin,
>
> int ptp_open(struct posix_clock *pc, fmode_t fmode)
> {
> + struct ptp_clock *ptp = container_of(pc, struct ptp_clock, clock);
> + struct timestamp_event_queue *queue;
> +
> + queue = kzalloc(sizeof(struct timestamp_event_queue), GFP_KERNEL);
> + if (queue == NULL)
nit: this could be: if (!queue)
> + return -EINVAL;
> + queue->reader_pid = task_pid_nr(current);
> + list_add_tail(&queue->qlist, &ptp->tsevqs);
> +
> return 0;
> }
...
> @@ -436,14 +466,25 @@ __poll_t ptp_poll(struct posix_clock *pc, struct file *fp, poll_table *wait)
> {
> struct ptp_clock *ptp = container_of(pc, struct ptp_clock, clock);
> struct timestamp_event_queue *queue;
> + struct list_head *pos, *n;
> + bool found = false;
> + pid_t reader_pid = task_pid_nr(current);
>
> poll_wait(fp, &ptp->tsev_wq, wait);
>
> /*
> - * Extract only the first element in the queue list
> - * TODO: Identify the relevant queue
> + * Extract only the desired element in the queue list
> */
> - queue = list_entry(&ptp->tsevqs, struct timestamp_event_queue, qlist);
> + list_for_each_safe(pos, n, &ptp->tsevqs) {
> + queue = list_entry(pos, struct timestamp_event_queue, qlist);
> + if (queue->reader_pid == reader_pid) {
> + found = true;
> + break;
> + }
> + }
> +
> + if (!found)
> + return -EINVAL;
Sparse complains that the return type for this function is __poll_t,
but here an int is returned. Perhaps returning EPOLLERR is appropriate here?
>
> return queue_cnt(queue) ? EPOLLIN : 0;
> }
...
next prev parent reply other threads:[~2023-09-06 18:13 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <72ac9741-27f5-36a5-f64c-7d81008eebbc@bluematt.me>
[not found] ` <Y+3m/PpzkBN9kxJY@localhost>
2023-02-16 17:54 ` [chrony-dev] Support for Multiple PPS Inputs on single PHC Matt Corallo
2023-02-16 22:54 ` Richard Cochran
2023-02-17 0:58 ` Matt Corallo
2023-02-20 10:08 ` Miroslav Lichvar
2023-02-20 15:24 ` Richard Cochran
2023-02-23 20:56 ` Matt Corallo
2023-02-24 0:19 ` Richard Cochran
2023-02-24 1:18 ` Matt Corallo
2023-02-24 5:07 ` Richard Cochran
2023-08-29 11:47 ` Xabier Marquiegui
2023-08-29 11:47 ` [PATCH] ptp: Demultiplexed timestamp channels Xabier Marquiegui
2023-08-29 14:07 ` Richard Cochran
2023-08-29 14:15 ` Richard Cochran
2023-08-30 21:41 ` [chrony-dev] Support for Multiple PPS Inputs on single PHC Xabier Marquiegui
2023-08-30 21:41 ` [PATCH] ptp: Demultiplexed timestamp channels Xabier Marquiegui
2023-08-30 22:01 ` Richard Cochran
2023-09-06 10:47 ` Xabier Marquiegui
2023-09-06 10:47 ` [PATCH 1/3] ptp: Replace timestamp event queue with linked list Xabier Marquiegui
2023-09-06 10:47 ` [PATCH 2/3] ptp: support multiple timestamp event readers Xabier Marquiegui
2023-09-06 18:13 ` Simon Horman [this message]
2023-09-06 22:13 ` kernel test robot
2023-09-06 10:47 ` [PATCH 3/3] ptp: support event queue reader channel masks Xabier Marquiegui
2023-09-06 18:18 ` kernel test robot
2023-08-31 0:29 ` [PATCH] ptp: Demultiplexed timestamp channels kernel test robot
2023-08-31 13:28 ` kernel test robot
2023-08-31 16:20 ` kernel test robot
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=20230906181349.GE270386@kernel.org \
--to=horms@kernel.org \
--cc=chrony-dev@chrony.tuxfamily.org \
--cc=mlichvar@redhat.com \
--cc=netdev@vger.kernel.org \
--cc=ntp-lists@mattcorallo.com \
--cc=reibax@gmail.com \
--cc=richardcochran@gmail.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.