[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [RFC XEN PATCH v3 07/39] xen/pmem: register valid PMEM regions to Xen hypervisor



> +
> +/**
> + * Add a PMEM region to a list. All PMEM regions in the list are
> + * sorted in the ascending order of the start address. A PMEM region,
> + * whose range is overlapped with anyone in the list, cannot be added
> + * to the list.
> + *
> + * Parameters:
> + *  list:       the list to which a new PMEM region will be added
> + *  smfn, emfn: the range of the new PMEM region
> + *  entry:      return the new entry added to the list
> + *
> + * Return:
> + *  On success, return 0 and the new entry added to the list is
> + *  returned via @entry. Otherwise, return an error number and the
> + *  value of @entry is undefined.
> + */
> +static int pmem_list_add(struct list_head *list,
> +                         unsigned long smfn, unsigned long emfn,
> +                         struct pmem **entry)
> +{
> +    struct list_head *cur;
> +    struct pmem *new_pmem;
> +    int rc = 0;
> +
> +    list_for_each_prev(cur, list)
> +    {
> +        struct pmem *cur_pmem = list_entry(cur, struct pmem, link);
> +        unsigned long cur_smfn = cur_pmem->smfn;
> +        unsigned long cur_emfn = cur_pmem->emfn;
> +
> +        if ( check_overlap(smfn, emfn, cur_smfn, cur_emfn) )
> +        {
> +            rc = -EEXIST;
> +            goto out;
> +        }
> +
> +        if ( cur_smfn < smfn )
> +            break;
> +    }
> +
> +    new_pmem = xzalloc(struct pmem);
> +    if ( !new_pmem )
> +    {
> +        rc = -ENOMEM;
> +        goto out;
> +    }
> +    new_pmem->smfn = smfn;
> +    new_pmem->emfn = emfn;
> +    list_add(&new_pmem->link, cur);
> +
> + out:
> +    if ( !rc && entry )
> +        *entry = new_pmem;
> +
> +    return rc;

It's not necessary to introduce 'out' and 'rc'. You can return directly
for failure case.

Chao

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.