Skip to content
  • Emanuele Giuseppe Esposito's avatar
    afe1e8a7
    job.c: add job_lock/unlock while keeping job.h intact · afe1e8a7
    Emanuele Giuseppe Esposito authored
    
    
    With "intact" we mean that all job.h functions implicitly
    take the lock. Therefore API callers are unmodified.
    
    This means that:
    - many static functions that will be always called with job lock held
      become _locked, and call _locked functions
    - all public functions take the lock internally if needed, and call _locked
      functions
    - all public functions called internally by other functions in job.c will have a
      _locked counterpart (sometimes public), to avoid deadlocks (job lock already taken).
      These functions are not used for now.
    - some public functions called only from exernal files (not job.c) do not
      have _locked() counterpart and take the lock inside. Others won't need
      the lock at all because use fields only set at initialization and
      never modified.
    
    job_{lock/unlock} is independent from real_job_{lock/unlock}.
    
    Note: at this stage, job_{lock/unlock} and job lock guard macros
    are *nop*
    
    Signed-off-by: default avatarEmanuele Giuseppe Esposito <eesposit@redhat.com>
    Reviewed-by: default avatarKevin Wolf <kwolf@redhat.com>
    Reviewed-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
    Reviewed-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
    Message-Id: <20220926093214.506243-6-eesposit@redhat.com>
    Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
    afe1e8a7
    job.c: add job_lock/unlock while keeping job.h intact
    Emanuele Giuseppe Esposito authored
    
    
    With "intact" we mean that all job.h functions implicitly
    take the lock. Therefore API callers are unmodified.
    
    This means that:
    - many static functions that will be always called with job lock held
      become _locked, and call _locked functions
    - all public functions take the lock internally if needed, and call _locked
      functions
    - all public functions called internally by other functions in job.c will have a
      _locked counterpart (sometimes public), to avoid deadlocks (job lock already taken).
      These functions are not used for now.
    - some public functions called only from exernal files (not job.c) do not
      have _locked() counterpart and take the lock inside. Others won't need
      the lock at all because use fields only set at initialization and
      never modified.
    
    job_{lock/unlock} is independent from real_job_{lock/unlock}.
    
    Note: at this stage, job_{lock/unlock} and job lock guard macros
    are *nop*
    
    Signed-off-by: default avatarEmanuele Giuseppe Esposito <eesposit@redhat.com>
    Reviewed-by: default avatarKevin Wolf <kwolf@redhat.com>
    Reviewed-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
    Reviewed-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
    Message-Id: <20220926093214.506243-6-eesposit@redhat.com>
    Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
Loading