diff options
Diffstat (limited to 'include/linux/posix-clock.h')
| -rw-r--r-- | include/linux/posix-clock.h | 19 | 
1 files changed, 11 insertions, 8 deletions
diff --git a/include/linux/posix-clock.h b/include/linux/posix-clock.h index fe6cfdcfbc26..468328b1e1dd 100644 --- a/include/linux/posix-clock.h +++ b/include/linux/posix-clock.h @@ -69,29 +69,32 @@ struct posix_clock_operations {   *   * @ops:     Functional interface to the clock   * @cdev:    Character device instance for this clock - * @kref:    Reference count. + * @dev:     Pointer to the clock's device.   * @rwsem:   Protects the 'zombie' field from concurrent access.   * @zombie:  If 'zombie' is true, then the hardware has disappeared. - * @release: A function to free the structure when the reference count reaches - *           zero. May be NULL if structure is statically allocated.   *   * Drivers should embed their struct posix_clock within a private   * structure, obtaining a reference to it during callbacks using   * container_of(). + * + * Drivers should supply an initialized but not exposed struct device + * to posix_clock_register(). It is used to manage lifetime of the + * driver's private structure. It's 'release' field should be set to + * a release function for this private structure.   */  struct posix_clock {  	struct posix_clock_operations ops;  	struct cdev cdev; -	struct kref kref; +	struct device *dev;  	struct rw_semaphore rwsem;  	bool zombie; -	void (*release)(struct posix_clock *clk);  };  /**   * posix_clock_register() - register a new clock - * @clk:   Pointer to the clock. Caller must provide 'ops' and 'release' - * @devid: Allocated device id + * @clk:   Pointer to the clock. Caller must provide 'ops' field + * @dev:   Pointer to the initialized device. Caller must provide + *         'release' field   *   * A clock driver calls this function to register itself with the   * clock device subsystem. If 'clk' points to dynamically allocated @@ -100,7 +103,7 @@ struct posix_clock {   *   * Returns zero on success, non-zero otherwise.   */ -int posix_clock_register(struct posix_clock *clk, dev_t devid); +int posix_clock_register(struct posix_clock *clk, struct device *dev);  /**   * posix_clock_unregister() - unregister a clock  | 
