/* easyproc.h * * Copyright (C) 2010 - 2013 UNISYS CORPORATION * All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * 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, GOOD TITLE or * NON INFRINGEMENT. See the GNU General Public License for more * details. */ /** @file ********************************************************************* * * This describes the interfaces necessary for a simple /proc file * implementation for a driver. * ****************************************************************************** */ #ifndef __EASYPROC_H__ #define __EASYPROC_H__ #include "timskmod.h" struct easyproc_driver_info { struct proc_dir_entry *ProcDir; struct proc_dir_entry *ProcDriverDir; struct proc_dir_entry *ProcDriverDiagFile; struct proc_dir_entry *ProcDeviceDir; char *ProcId; void (*Show_device_info)(struct seq_file *seq, void *p); void (*Show_driver_info)(struct seq_file *seq); void (*Write_device_info)(char *buf, size_t count, loff_t *ppos, void *p); void (*Write_driver_info)(char *buf, size_t count, loff_t *ppos); }; /* property is a file under /proc//device// */ struct easyproc_device_property_info { char property_name[25]; struct proc_dir_entry *procEntry; struct easyproc_driver_info *pdriver; void *devdata; void (*show_device_property_info)(struct seq_file *seq, void *p); }; struct easyproc_device_info { struct proc_dir_entry *procDevicexDir; struct proc_dir_entry *procDevicexDiagFile; struct easyproc_driver_info *pdriver; void *devdata; int devno; /* allow for a number of custom properties for each device: */ struct easyproc_device_property_info device_property_info[10]; }; void visor_easyproc_InitDevice(struct easyproc_driver_info *pdriver, struct easyproc_device_info *p, int devno, void *devdata); void visor_easyproc_DeInitDevice(struct easyproc_driver_info *pdriver, struct easyproc_device_info *p, int devno); void visor_easyproc_InitDriver(struct easyproc_driver_info *pdriver, char *procId, void (*show_driver_info)(struct seq_file *), void (*show_device_info)(struct seq_file *, void *)); void visor_easyproc_InitDriverEx(struct easyproc_driver_info *pdriver, char *procId, void (*show_driver_info)(struct seq_file *), void (*show_device_info)(struct seq_file *, void *), void (*Write_driver_info)(char *buf, size_t count, loff_t *ppos), void (*Write_device_info)(char *buf, size_t count, loff_t *ppos, void *p)); void visor_easyproc_DeInitDriver(struct easyproc_driver_info *pdriver); void visor_easyproc_CreateDeviceProperty(struct easyproc_device_info *p, void (*show_property_info) (struct seq_file *, void *), char *property_name); #endif