[-mm patch] relayfs: API cleanup
This patch does a bit of cleanup of the relayfs API, as discussed previously: http://marc.theaimsgroup.com/?l=linux-kernel=112134773617086=2 To recap, it: - removes the commit counts, relay_commit() and the deliver() callback (the padding counts had to stay, for the read() implementation) - removes the buffer_full() callback - changes the subbuf_start() callback - changes 'unsigned' to 'unsigned int' - other similar and related changes The examples have been updated to use the new API (there's also a new example that does commit/deliver in the client): http://prdownloads.sourceforge.net/relayfs/relay-apps-0.7.tar.gz?download Andrew, please apply. Thanks, Tom Signed-off-by: Tom Zanussi <[EMAIL PROTECTED]> diff -urpN -X dontdiff linux-2.6.13-rc4-mm1/fs/relayfs/buffers.c linux-2.6.13-rc4-mm1-cur/fs/relayfs/buffers.c --- linux-2.6.13-rc4-mm1/fs/relayfs/buffers.c 2005-08-05 10:14:34.0 -0500 +++ linux-2.6.13-rc4-mm1-cur/fs/relayfs/buffers.c 2005-08-05 10:17:30.0 -0500 @@ -95,7 +95,7 @@ int relay_mmap_buf(struct rchan_buf *buf static void *relay_alloc_buf(struct rchan_buf *buf, unsigned long size) { void *mem; - int i, j, n_pages; + unsigned int i, j, n_pages; size = PAGE_ALIGN(size); n_pages = size >> PAGE_SHIFT; @@ -141,20 +141,15 @@ struct rchan_buf *relay_create_buf(struc if (!buf->padding) goto free_buf; - buf->commit = kmalloc(chan->n_subbufs * sizeof(unsigned *), GFP_KERNEL); - if (!buf->commit) - goto free_buf; - buf->start = relay_alloc_buf(buf, chan->alloc_size); if (!buf->start) goto free_buf; - + buf->chan = chan; kref_get(>chan->kref); return buf; free_buf: - kfree(buf->commit); kfree(buf->padding); kfree(buf); return NULL; @@ -167,7 +162,7 @@ free_buf: void relay_destroy_buf(struct rchan_buf *buf) { struct rchan *chan = buf->chan; - int i; + unsigned int i; if (likely(buf->start)) { vunmap(buf->start); @@ -176,7 +171,6 @@ void relay_destroy_buf(struct rchan_buf kfree(buf->page_array); } kfree(buf->padding); - kfree(buf->commit); kfree(buf); kref_put(>kref, relay_destroy_channel); } diff -urpN -X dontdiff linux-2.6.13-rc4-mm1/fs/relayfs/relay.c linux-2.6.13-rc4-mm1-cur/fs/relayfs/relay.c --- linux-2.6.13-rc4-mm1/fs/relayfs/relay.c 2005-08-05 10:14:34.0 -0500 +++ linux-2.6.13-rc4-mm1-cur/fs/relayfs/relay.c 2005-08-05 10:17:30.0 -0500 @@ -26,10 +26,7 @@ */ int relay_buf_empty(struct rchan_buf *buf) { - int produced = atomic_read(>subbufs_produced); - int consumed = atomic_read(>subbufs_consumed); - - return (produced - consumed) ? 0 : 1; + return (buf->subbufs_produced - buf->subbufs_consumed) ? 0 : 1; } /** @@ -38,17 +35,10 @@ int relay_buf_empty(struct rchan_buf *bu * * Returns 1 if the buffer is full, 0 otherwise. */ -static inline int relay_buf_full(struct rchan_buf *buf) +int relay_buf_full(struct rchan_buf *buf) { - int produced, consumed; - - if (buf->chan->overwrite) - return 0; - - produced = atomic_read(>subbufs_produced); - consumed = atomic_read(>subbufs_consumed); - - return (produced - consumed > buf->chan->n_subbufs - 1) ? 1 : 0; + unsigned int ready = buf->subbufs_produced - buf->subbufs_consumed; + return (ready >= buf->chan->n_subbufs) ? 1 : 0; } /* @@ -65,19 +55,10 @@ static inline int relay_buf_full(struct */ static int subbuf_start_default_callback (struct rchan_buf *buf, void *subbuf, - unsigned prev_subbuf_idx, - void *prev_subbuf) -{ - return 0; -} - -/* - * deliver() default callback. Does nothing. - */ -static void deliver_default_callback (struct rchan_buf *buf, - unsigned subbuf_idx, - void *subbuf) + void *prev_subbuf, + unsigned int prev_padding) { + return 1; } /* @@ -96,22 +77,11 @@ static void buf_unmapped_default_callbac { } -/* - * buf_full() default callback. Does nothing. - */ -static void buf_full_default_callback(struct rchan_buf *buf, - unsigned subbuf_idx, - void *subbuf) -{ -} - /* relay channel default callbacks */ static struct rchan_callbacks default_channel_callbacks = { .subbuf_start = subbuf_start_default_callback, - .deliver = deliver_default_callback, .buf_mapped = buf_mapped_default_callback, .buf_unmapped = buf_unmapped_default_callback, - .buf_full = buf_full_default_callback, }; /** @@ -129,29
[-mm patch] relayfs: API cleanup
This patch does a bit of cleanup of the relayfs API, as discussed previously: http://marc.theaimsgroup.com/?l=linux-kernelm=112134773617086w=2 To recap, it: - removes the commit counts, relay_commit() and the deliver() callback (the padding counts had to stay, for the read() implementation) - removes the buffer_full() callback - changes the subbuf_start() callback - changes 'unsigned' to 'unsigned int' - other similar and related changes The examples have been updated to use the new API (there's also a new example that does commit/deliver in the client): http://prdownloads.sourceforge.net/relayfs/relay-apps-0.7.tar.gz?download Andrew, please apply. Thanks, Tom Signed-off-by: Tom Zanussi [EMAIL PROTECTED] diff -urpN -X dontdiff linux-2.6.13-rc4-mm1/fs/relayfs/buffers.c linux-2.6.13-rc4-mm1-cur/fs/relayfs/buffers.c --- linux-2.6.13-rc4-mm1/fs/relayfs/buffers.c 2005-08-05 10:14:34.0 -0500 +++ linux-2.6.13-rc4-mm1-cur/fs/relayfs/buffers.c 2005-08-05 10:17:30.0 -0500 @@ -95,7 +95,7 @@ int relay_mmap_buf(struct rchan_buf *buf static void *relay_alloc_buf(struct rchan_buf *buf, unsigned long size) { void *mem; - int i, j, n_pages; + unsigned int i, j, n_pages; size = PAGE_ALIGN(size); n_pages = size PAGE_SHIFT; @@ -141,20 +141,15 @@ struct rchan_buf *relay_create_buf(struc if (!buf-padding) goto free_buf; - buf-commit = kmalloc(chan-n_subbufs * sizeof(unsigned *), GFP_KERNEL); - if (!buf-commit) - goto free_buf; - buf-start = relay_alloc_buf(buf, chan-alloc_size); if (!buf-start) goto free_buf; - + buf-chan = chan; kref_get(buf-chan-kref); return buf; free_buf: - kfree(buf-commit); kfree(buf-padding); kfree(buf); return NULL; @@ -167,7 +162,7 @@ free_buf: void relay_destroy_buf(struct rchan_buf *buf) { struct rchan *chan = buf-chan; - int i; + unsigned int i; if (likely(buf-start)) { vunmap(buf-start); @@ -176,7 +171,6 @@ void relay_destroy_buf(struct rchan_buf kfree(buf-page_array); } kfree(buf-padding); - kfree(buf-commit); kfree(buf); kref_put(chan-kref, relay_destroy_channel); } diff -urpN -X dontdiff linux-2.6.13-rc4-mm1/fs/relayfs/relay.c linux-2.6.13-rc4-mm1-cur/fs/relayfs/relay.c --- linux-2.6.13-rc4-mm1/fs/relayfs/relay.c 2005-08-05 10:14:34.0 -0500 +++ linux-2.6.13-rc4-mm1-cur/fs/relayfs/relay.c 2005-08-05 10:17:30.0 -0500 @@ -26,10 +26,7 @@ */ int relay_buf_empty(struct rchan_buf *buf) { - int produced = atomic_read(buf-subbufs_produced); - int consumed = atomic_read(buf-subbufs_consumed); - - return (produced - consumed) ? 0 : 1; + return (buf-subbufs_produced - buf-subbufs_consumed) ? 0 : 1; } /** @@ -38,17 +35,10 @@ int relay_buf_empty(struct rchan_buf *bu * * Returns 1 if the buffer is full, 0 otherwise. */ -static inline int relay_buf_full(struct rchan_buf *buf) +int relay_buf_full(struct rchan_buf *buf) { - int produced, consumed; - - if (buf-chan-overwrite) - return 0; - - produced = atomic_read(buf-subbufs_produced); - consumed = atomic_read(buf-subbufs_consumed); - - return (produced - consumed buf-chan-n_subbufs - 1) ? 1 : 0; + unsigned int ready = buf-subbufs_produced - buf-subbufs_consumed; + return (ready = buf-chan-n_subbufs) ? 1 : 0; } /* @@ -65,19 +55,10 @@ static inline int relay_buf_full(struct */ static int subbuf_start_default_callback (struct rchan_buf *buf, void *subbuf, - unsigned prev_subbuf_idx, - void *prev_subbuf) -{ - return 0; -} - -/* - * deliver() default callback. Does nothing. - */ -static void deliver_default_callback (struct rchan_buf *buf, - unsigned subbuf_idx, - void *subbuf) + void *prev_subbuf, + unsigned int prev_padding) { + return 1; } /* @@ -96,22 +77,11 @@ static void buf_unmapped_default_callbac { } -/* - * buf_full() default callback. Does nothing. - */ -static void buf_full_default_callback(struct rchan_buf *buf, - unsigned subbuf_idx, - void *subbuf) -{ -} - /* relay channel default callbacks */ static struct rchan_callbacks default_channel_callbacks = { .subbuf_start = subbuf_start_default_callback, - .deliver = deliver_default_callback, .buf_mapped = buf_mapped_default_callback, .buf_unmapped = buf_unmapped_default_callback, - .buf_full = buf_full_default_callback, }; /** @@ -129,29 +99,16 @@