• M
    [media] media: convert links from array to list · 57208e5e
    Mauro Carvalho Chehab 提交于
    The entire logic that represent graph links were developed on a
    time where there were no needs to dynamic remove links. So,
    although links are created/removed one by one via some
    functions, they're stored as an array inside the entity struct.
    
    As the array may grow, there's a logic inside the code that
    checks if the amount of space is not enough to store
    the needed links. If it isn't the core uses krealloc()
    to change the size of the link, with is bad, as it
    leaves the memory fragmented.
    
    So, convert links into a list.
    
    Also, currently,  both source and sink entities need the link
    at the graph traversal logic inside media_entity. So there's
    a logic duplicating all links. That makes it to spend
    twice the memory needed. This is not a big deal for today's
    usage, where the number of links are not big.
    
    Yet, if during the MC workshop discussions, it was said that
    IIO graphs could have up to 4,000 entities. So, we may
    want to remove the duplication on some future. The problem
    is that it would require a separate linked list to store
    the backlinks inside the entity, or to use a more complex
    algorithm to do graph backlink traversal, with is something
    that the current graph traversal inside the core can't cope
    with. So, let's postpone a such change if/when it is actually
    needed.
    
    It should also be noticed that the media_link structure uses
    44 bytes on 32-bit architectures and 84 bytes on 64-bit
    architecture. It will thus be allocated out of the 64-bytes and
    96-bytes pools respectively. That's a 12.5% memory waste on
    64-bit architectures and 31.25% on 32-bit architecture.
    A linked list is less efficient than an array in this case, but
    this could later be optimized if we can get rid of the reverse
    links (with would reduce memory allocation by 50%).
    Signed-off-by: NMauro Carvalho Chehab <mchehab@osg.samsung.com>
    57208e5e
media-entity.h 8.5 KB