cregit-Linux how code gets into the kernel

Release 4.7 drivers/staging/android/sync.h

/*
 * include/linux/sync.h
 *
 * Copyright (C) 2012 Google, Inc.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 */

#ifndef _LINUX_SYNC_H

#define _LINUX_SYNC_H

#include <linux/types.h>
#include <linux/kref.h>
#include <linux/ktime.h>
#include <linux/list.h>
#include <linux/spinlock.h>
#include <linux/fence.h>

#include <linux/sync_file.h>
#include <uapi/linux/sync_file.h>

struct sync_timeline;

/**
 * struct sync_timeline_ops - sync object implementation ops
 * @driver_name:        name of the implementation
 * @has_signaled:       returns:
 *                        1 if pt has signaled
 *                        0 if pt has not signaled
 *                       <0 on error
 * @timeline_value_str: fill str with the value of the sync_timeline's counter
 * @fence_value_str:    fill str with the value of the fence
 */

struct sync_timeline_ops {
	
const char *driver_name;

	/* required */
	
int (*has_signaled)(struct fence *fence);

	/* optional */
	
void (*timeline_value_str)(struct sync_timeline *timeline, char *str,
				   int size);

	/* optional */
	
void (*fence_value_str)(struct fence *fence, char *str, int size);
};

/**
 * struct sync_timeline - sync object
 * @kref:               reference count on fence.
 * @ops:                ops that define the implementation of the sync_timeline
 * @name:               name of the sync_timeline. Useful for debugging
 * @destroyed:          set when sync_timeline is destroyed
 * @child_list_head:    list of children sync_pts for this sync_timeline
 * @child_list_lock:    lock protecting @child_list_head, destroyed, and
 *                      fence.status
 * @active_list_head:   list of active (unsignaled/errored) sync_pts
 * @sync_timeline_list: membership in global sync_timeline_list
 */

struct sync_timeline {
	
struct kref		kref;
	
const struct sync_timeline_ops	*ops;
	
char			name[32];

	/* protected by child_list_lock */
	
bool			destroyed;
	

int			context, value;

	
struct list_head	child_list_head;
	
spinlock_t		child_list_lock;

	
struct list_head	active_list_head;

#ifdef CONFIG_DEBUG_FS
	
struct list_head	sync_timeline_list;
#endif
};


static inline struct sync_timeline *fence_parent(struct fence *fence) { return container_of(fence->lock, struct sync_timeline, child_list_lock); }

Contributors

PersonTokensPropCommitsCommitProp
maarten lankhorstmaarten lankhorst2281.48%133.33%
gustavo padovangustavo padovan414.81%133.33%
erik gillingerik gilling13.70%133.33%
Total27100.00%3100.00%

/* * API for sync_timeline implementers */ /** * sync_timeline_create() - creates a sync object * @ops: specifies the implementation ops for the object * @size: size to allocate for this obj * @name: sync_timeline name * * Creates a new sync_timeline which will use the implementation specified by * @ops. @size bytes will be allocated allowing for implementation specific * data to be kept after the generic sync_timeline struct. Returns the * sync_timeline object or NULL in case of error. */ struct sync_timeline *sync_timeline_create(const struct sync_timeline_ops *ops, int size, const char *name); /** * sync_timeline_destroy() - destroys a sync object * @obj: sync_timeline to destroy * * A sync implementation should call this when the @obj is going away * (i.e. module unload.) @obj won't actually be freed until all its children * fences are freed. */ void sync_timeline_destroy(struct sync_timeline *obj); /** * sync_timeline_signal() - signal a status change on a sync_timeline * @obj: sync_timeline to signal * * A sync implementation should call this any time one of it's fences * has signaled or has an error condition. */ void sync_timeline_signal(struct sync_timeline *obj); /** * sync_pt_create() - creates a sync pt * @parent: fence's parent sync_timeline * @size: size to allocate for this pt * * Creates a new fence as a child of @parent. @size bytes will be * allocated allowing for implementation specific data to be kept after * the generic sync_timeline struct. Returns the fence object or * NULL in case of error. */ struct fence *sync_pt_create(struct sync_timeline *parent, int size); #ifdef CONFIG_DEBUG_FS void sync_timeline_debug_add(struct sync_timeline *obj); void sync_timeline_debug_remove(struct sync_timeline *obj); void sync_file_debug_add(struct sync_file *fence); void sync_file_debug_remove(struct sync_file *fence); void sync_dump(void); #else # define sync_timeline_debug_add(obj) # define sync_timeline_debug_remove(obj) # define sync_file_debug_add(fence) # define sync_file_debug_remove(fence) # define sync_dump() #endif #endif /* _LINUX_SYNC_H */

Overall Contributors

PersonTokensPropCommitsCommitProp
erik gillingerik gilling18157.83%750.00%
maarten lankhorstmaarten lankhorst10633.87%17.14%
gustavo padovangustavo padovan268.31%642.86%
Total313100.00%14100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
{% endraw %}