Эта строка
struct kinetis_flash *kf = calloc(1, sizeof(*kf));
- это динамическое выделение struct kinetis_flash
где-то в ОЗУ.Вероятно, он используется для хранения информации об устройстве флэш-памяти, присутствующем в системе.
Эта строка
struct target_flash *f = &kf->f;
указывает f
на struct target_flash
- с именем f
- внутри struct kinetis_flash
, чтобы вы могли писать в него, используя f->some_var = ...
Таким образом, вся функция просто создает и инициализирует объект типа struct kinetis_flash
Хотя код правильный, он (IMOнемного сбивает с толку наличие переменной f
, указывающей на f
внутри структуры.Возможно, имя типа ptr_f
будет более понятным.
Также обратите внимание, что код эквивалентен:
static void kl_gen_add_flash(target *t, uint32_t addr, size_t length,
size_t erasesize, size_t write_len)
{
struct kinetis_flash *kf = calloc(1, sizeof(*kf));
kf->f.start = addr;
kf->f.length = length;
...
}