[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 6/7] procfs: reorganize rootdir.c
From: |
Samuel Thibault |
Subject: |
Re: [PATCH 6/7] procfs: reorganize rootdir.c |
Date: |
Mon, 29 Sep 2014 01:26:47 +0200 |
User-agent: |
Mutt/1.5.21+34 (58baf7c9f32f) (2010-12-30) |
Justus Winter, le Mon 22 Sep 2014 11:38:43 +0200, a écrit :
> * procfs/rootdir.c: Move the translator linkage code to the
> appropriate location.
Ack.
> ---
> procfs/rootdir.c | 153
> ++++++++++++++++++++++++++++---------------------------
> 1 file changed, 77 insertions(+), 76 deletions(-)
>
> diff --git a/procfs/rootdir.c b/procfs/rootdir.c
> index a04fb3e..d68645e 100644
> --- a/procfs/rootdir.c
> +++ b/procfs/rootdir.c
> @@ -409,83 +409,7 @@ rootdir_gc_fakeself (void *hook, char **contents,
> ssize_t *contents_len)
> }
>
> static struct node *rootdir_mounts_node;
> -
> -/* Translator linkage. */
> -static pthread_spinlock_t rootdir_translated_node_lock =
> - PTHREAD_SPINLOCK_INITIALIZER;
> -
> -struct procfs_translated_node_ops
> -{
> - struct procfs_node_ops node_ops;
> -
> - struct node **npp;
> - char *argz;
> - size_t argz_len;
> -};
> -
> -static struct node *
> -rootdir_make_translated_node (void *dir_hook, const void *entry_hook)
> -{
> - const struct procfs_translated_node_ops *ops = entry_hook;
> - struct node *np, *prev;
>
> - pthread_spin_lock (&rootdir_translated_node_lock);
> - np = *ops->npp;
> - pthread_spin_unlock (&rootdir_translated_node_lock);
> -
> - if (np != NULL)
> - {
> - netfs_nref (np);
> - return np;
> - }
> -
> - np = procfs_make_node (entry_hook, entry_hook);
> - if (np == NULL)
> - return NULL;
> -
> - procfs_node_chtype (np, S_IFREG | S_IPTRANS);
> - procfs_node_chmod (np, 0444);
> -
> - pthread_spin_lock (&rootdir_translated_node_lock);
> - prev = *ops->npp;
> - if (*ops->npp == NULL)
> - *ops->npp = np;
> - pthread_spin_unlock (&rootdir_translated_node_lock);
> -
> - if (prev != NULL)
> - {
> - procfs_cleanup (np);
> - np = prev;
> - }
> -
> - return np;
> -}
> -
> -static error_t
> -rootdir_translated_node_get_translator (void *hook, char **argz,
> - size_t *argz_len)
> -{
> - const struct procfs_translated_node_ops *ops = hook;
> -
> - *argz = malloc (ops->argz_len);
> - if (! *argz)
> - return ENOMEM;
> -
> - memcpy (*argz, ops->argz, ops->argz_len);
> - *argz_len = ops->argz_len;
> - return 0;
> -}
> -
> -#define ROOTDIR_DEFINE_TRANSLATED_NODE(NPP, ARGZ) \
> - &(struct procfs_translated_node_ops) { \
> - .node_ops = { \
> - .get_translator = rootdir_translated_node_get_translator, \
> - }, \
> - .npp = NPP, \
> - .argz = (ARGZ), \
> - .argz_len = sizeof (ARGZ), \
> - }
> -
> static error_t
> rootdir_gc_slabinfo (void *hook, char **contents, ssize_t *contents_len)
> {
> @@ -619,7 +543,84 @@ rootdir_symlink_make_node (void *dir_hook, const void
> *entry_hook)
> procfs_node_chtype (np, S_IFLNK);
> return np;
> }
> +
> +/* Translator linkage. */
> +
> +static pthread_spinlock_t rootdir_translated_node_lock =
> + PTHREAD_SPINLOCK_INITIALIZER;
> +
> +struct procfs_translated_node_ops
> +{
> + struct procfs_node_ops node_ops;
> +
> + struct node **npp;
> + char *argz;
> + size_t argz_len;
> +};
> +
> +static struct node *
> +rootdir_make_translated_node (void *dir_hook, const void *entry_hook)
> +{
> + const struct procfs_translated_node_ops *ops = entry_hook;
> + struct node *np, *prev;
> +
> + pthread_spin_lock (&rootdir_translated_node_lock);
> + np = *ops->npp;
> + pthread_spin_unlock (&rootdir_translated_node_lock);
> +
> + if (np != NULL)
> + {
> + netfs_nref (np);
> + return np;
> + }
> +
> + np = procfs_make_node (entry_hook, entry_hook);
> + if (np == NULL)
> + return NULL;
> +
> + procfs_node_chtype (np, S_IFREG | S_IPTRANS);
> + procfs_node_chmod (np, 0444);
> +
> + pthread_spin_lock (&rootdir_translated_node_lock);
> + prev = *ops->npp;
> + if (*ops->npp == NULL)
> + *ops->npp = np;
> + pthread_spin_unlock (&rootdir_translated_node_lock);
> +
> + if (prev != NULL)
> + {
> + procfs_cleanup (np);
> + np = prev;
> + }
> +
> + return np;
> +}
> +
> +static error_t
> +rootdir_translated_node_get_translator (void *hook, char **argz,
> + size_t *argz_len)
> +{
> + const struct procfs_translated_node_ops *ops = hook;
>
> + *argz = malloc (ops->argz_len);
> + if (! *argz)
> + return ENOMEM;
> +
> + memcpy (*argz, ops->argz, ops->argz_len);
> + *argz_len = ops->argz_len;
> + return 0;
> +}
> +
> +#define ROOTDIR_DEFINE_TRANSLATED_NODE(NPP, ARGZ) \
> + &(struct procfs_translated_node_ops) { \
> + .node_ops = { \
> + .get_translator = rootdir_translated_node_get_translator, \
> + }, \
> + .npp = NPP, \
> + .argz = (ARGZ), \
> + .argz_len = sizeof (ARGZ), \
> + }
> +
> static const struct procfs_dir_entry rootdir_entries[] = {
> {
> .name = "self",
> --
> 2.1.0
>
--
Samuel
Je suis maintenant possesseur d'un ordinateur portable Compaq Armada
1592DT avec port infra-rouge. Auriez-vous connaissance de programmes
suceptibles d'utiliser ce port afin de servir de télécommande ?
-+- JN in NPC : ben quoi, c'est pas à ça que ça sert ?
- [PATCH 1/7] procfs: implement /proc/N/maps, (continued)
- [PATCH 4/7] procfs: do not test whether /hurd/mtab exists, Justus Winter, 2014/09/22
- Re: [PATCH 4/7] procfs: do not test whether /hurd/mtab exists, Samuel Thibault, 2014/09/28
- [PATCH 2/7] procfs: implement /proc/filesystems, Justus Winter, 2014/09/22
- Re: [PATCH 2/7] procfs: implement /proc/filesystems, Samuel Thibault, 2014/09/28
- [PATCH 5/7] procfs: generalize the translator linkage code, Justus Winter, 2014/09/22
- Re: [PATCH 5/7] procfs: generalize the translator linkage code, Samuel Thibault, 2014/09/28
- [PATCH 6/7] procfs: reorganize rootdir.c, Justus Winter, 2014/09/22
- Re: [PATCH 6/7] procfs: reorganize rootdir.c,
Samuel Thibault <=
- [PATCH 7/7] procfs: provide magic retry response for /proc/self, Justus Winter, 2014/09/22
- Re: [PATCH 7/7] procfs: provide magic retry response for /proc/self, Samuel Thibault, 2014/09/30
- And the libc patch, Justus Winter, 2014/09/22
- [PATCH] hurd: Handle `proc/self' magical lookup retry, Justus Winter, 2014/09/22
- Re: [PATCH 1/7] procfs: implement /proc/N/maps, Samuel Thibault, 2014/09/28
- [PATCH 5/6] procfs: reorganize rootdir.c, Justus Winter, 2014/09/21
- [PATCH 6/6] procfs: provide magic retry response for /proc/self, Justus Winter, 2014/09/21