|
@@ -97,6 +97,23 @@ loff_t generic_file_llseek(struct file *file, loff_t offset, int origin)
|
|
|
}
|
|
|
EXPORT_SYMBOL(generic_file_llseek);
|
|
|
|
|
|
+/**
|
|
|
+ * noop_llseek - No Operation Performed llseek implementation
|
|
|
+ * @file: file structure to seek on
|
|
|
+ * @offset: file offset to seek to
|
|
|
+ * @origin: type of seek
|
|
|
+ *
|
|
|
+ * This is an implementation of ->llseek useable for the rare special case when
|
|
|
+ * userspace expects the seek to succeed but the (device) file is actually not
|
|
|
+ * able to perform the seek. In this case you use noop_llseek() instead of
|
|
|
+ * falling back to the default implementation of ->llseek.
|
|
|
+ */
|
|
|
+loff_t noop_llseek(struct file *file, loff_t offset, int origin)
|
|
|
+{
|
|
|
+ return file->f_pos;
|
|
|
+}
|
|
|
+EXPORT_SYMBOL(noop_llseek);
|
|
|
+
|
|
|
loff_t no_llseek(struct file *file, loff_t offset, int origin)
|
|
|
{
|
|
|
return -ESPIPE;
|