All of lore.kernel.org
 help / color / mirror / Atom feed
From: Denis Kenzior <denkenz@gmail.com>
To: ofono@ofono.org
Subject: Re: driver callback naming
Date: Sun, 30 Aug 2009 13:45:45 -0500	[thread overview]
Message-ID: <200908301345.45643.denkenz@gmail.com> (raw)
In-Reply-To: <20090829180115.4d5744e5@mycelium.queued.net>

[-- Attachment #1: Type: text/plain, Size: 1854 bytes --]

Hi Andres,

> static struct ofono_modem_driver g1_driver = {
>         .name = "HTC G1",
>         .probe = g1_probe,
>         .enable = g1_enable,
>         .disable = g1_disable,
>         .remove = g1_remove,
>         .populate = g1_populate,
> };
>

So the current intention:
.probe - Detect whether device is really supported by the plugin, initialize 
any data structures specific to the device
.remove - Destroy data structures
.enable - Perform power up
.disable - Perform power down
.populate - Populate the atoms supported by this device (e.g. netreg, 
voicecall, etc)  This is called by the core after every power cycle, when the 
device is brought up.

>
> Of course, I'm also wondering why there needs to be two separate layers
> of calls in the first place.  Why not have drivers register everything
> from within probe, call ofono_set_powered(modem, TRUE) once the device
> is ready, and be done with it?

The reason for this is e.g. airplane mode, where you physically want to turn 
off the device.  Another case is for battery / power reasons, e.g. a netbook 
with a USB modem that is not being used.

> The only reason why this doesn't blow up in the generic_at plugin is
> because the driver_data is leaked.  If one were to free it from
> generic_at_exit in the wrong place (since it's allocated from
> generic_at_init, it would make sense to free it in generic_at_exit),
> one would see the same SEGV/SIGBUS/SIGILL errors upon ctrl-c.

So the leak has now been fixed.

I think you're being unnecessarily harsh here.  To be fair, the generic_at 
driver does something like this at init:

create generic_data
create modem
set modem data
register modem

If you were to reverse the steps, e.g.:
remove_modem
destroy generic_data

everything would work just fine.

Regards,
-Denis

  reply	other threads:[~2009-08-30 18:45 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-08-29 22:01 driver callback naming Andres Salomon
2009-08-30 18:45 ` Denis Kenzior [this message]
2009-08-30 20:00   ` Andres Salomon
2009-08-30 20:10     ` Denis Kenzior
2009-08-30 20:10   ` Aki Niemi
2009-08-30 20:20     ` Denis Kenzior
2009-08-31  8:54       ` Aki Niemi

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=200908301345.45643.denkenz@gmail.com \
    --to=denkenz@gmail.com \
    --cc=ofono@ofono.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.