Sanjeev,
Please see my comments below:
> +EXPORT_SYMBOL(hwspinlock_trylock);
[sp] The code is almost duplicated in the functions hwspinlock_trylock()
and hwspinlock_lock(). The difference being try-once/ try-multiple.
I believe one function with additional arg - say limit - should be
sufficient.
If there is need to abstract additional arg, you can define macros
for the same.
[SQ] Good point, done.
> + for (i = 0; i < hwspinlock_state.num_locks && !found; i++) {
> + if (!hwspinlock_array[i].is_allocated) {
> + found = true;
> + handle = &hwspinlock_array[i];
> + }
[sp] Starting from index 0 every time can be quite time consuming
esp. in the situations where we need spinlocks. IRQs being
disabled for long can impact the performance.
Wouldn't a used and free list be better alternative?
[SQ] Done.
> + if (WARN_ON(hwspinlock_array[id].is_allocated))
> + goto exit;
> +
[sp] if (id > hwspinlock_state.num_locks) then ??
[SQ] Good catch. Fixed.
> +EXPORT_SYMBOL(hwspinlock_request_specific);
[sp] What if either of the "request" funcs are called before
hwspinlock_probe() gets executed?
[SQ] Added a check for that.
> +/* Probe function */
> +static int __devinit hwspinlock_probe(struct platform_device *pdev) {
> + struct resource *res;
> + void __iomem *io_base;
> + int id;
> +
[sp] Extra line?
[SQ] Yeah, got rid of it.
> + void __iomem *sysstatus_reg;
[sp] can be combined with op_base declaration.
[SQ] Okay done.
> +static struct platform_driver hwspinlock_driver = {
> + .probe = hwspinlock_probe,
> + .driver = {
> + .name = "hwspinlock",
[sp] Extra TAB?
[SQ] No, it's one level down. Notice the extra { }'s.
Thanks,
Simon
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html